Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-gpu
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc-gpu
Commits
63e5475e
Commit
63e5475e
authored
May 25, 2010
by
Laurent Aimar
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Removed fake decoder.
parent
43e06934
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
0 additions
and
436 deletions
+0
-436
modules/codec/Modules.am
modules/codec/Modules.am
+0
-2
modules/codec/fake.c
modules/codec/fake.c
+0
-434
No files found.
modules/codec/Modules.am
View file @
63e5475e
...
...
@@ -23,7 +23,6 @@ SOURCES_dirac = dirac.c
SOURCES_png = png.c
SOURCES_svcdsub = svcdsub.c
SOURCES_cvdsub = cvdsub.c
SOURCES_fake = fake.c
SOURCES_invmem = invmem.c
SOURCES_realvideo = realvideo.c
SOURCES_sdl_image = sdl_image.c
...
...
@@ -45,7 +44,6 @@ libvlc_LTLIBRARIES += \
libcdg_plugin.la \
libcvdsub_plugin.la \
libdts_plugin.la \
libfake_plugin.la \
libdvbsub_plugin.la \
liblpcm_plugin.la \
libmpeg_audio_plugin.la \
...
...
modules/codec/fake.c
deleted
100644 → 0
View file @
43e06934
/*****************************************************************************
* fake.c: decoder reading from a fake stream, outputting a fixed image
*****************************************************************************
* Copyright (C) 2005-2009 the VideoLAN team
* $Id$
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
* Jean-Paul Saman <jpsaman at m2x dot nl>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
/*****************************************************************************
* Preamble
*****************************************************************************/
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include <vlc_common.h>
#include <vlc_plugin.h>
#include <vlc_codec.h>
#include <vlc_image.h>
#include <vlc_filter.h>
/*****************************************************************************
* Local prototypes
*****************************************************************************/
static
int
OpenDecoder
(
vlc_object_t
*
);
static
void
CloseDecoder
(
vlc_object_t
*
);
static
picture_t
*
DecodeBlock
(
decoder_t
*
,
block_t
**
);
static
int
FakeCallback
(
vlc_object_t
*
,
char
const
*
,
vlc_value_t
,
vlc_value_t
,
void
*
);
/*****************************************************************************
* Module descriptor
*****************************************************************************/
#define FILE_TEXT N_("Image file")
#define FILE_LONGTEXT N_( \
"Path of the image file for fake input." )
#define RELOAD_TEXT N_("Reload image file")
#define RELOAD_LONGTEXT N_( \
"Reload image file every n seconds." )
#define WIDTH_TEXT N_("Video width")
#define WIDTH_LONGTEXT N_( \
"Output video width." )
#define HEIGHT_TEXT N_("Video height")
#define HEIGHT_LONGTEXT N_( \
"Output video height." )
#define KEEP_AR_TEXT N_("Keep aspect ratio")
#define KEEP_AR_LONGTEXT N_( \
"Consider width and height as maximum values." )
#define ASPECT_RATIO_TEXT N_("Background aspect ratio")
#define ASPECT_RATIO_LONGTEXT N_( \
"Aspect ratio of the image file (4:3, 16:9). Default is square pixels." )
#define DEINTERLACE_TEXT N_("Deinterlace video")
#define DEINTERLACE_LONGTEXT N_( \
"Deinterlace the image after loading it." )
#define DEINTERLACE_MODULE_TEXT N_("Deinterlace module")
#define DEINTERLACE_MODULE_LONGTEXT N_( \
"Deinterlace module to use." )
#define CHROMA_TEXT N_("Chroma used")
#define CHROMA_LONGTEXT N_( \
"Force use of a specific chroma for output. Default is I420." )
static
const
char
*
const
ppsz_deinterlace_type
[]
=
{
"deinterlace"
,
"ffmpeg-deinterlace"
};
vlc_module_begin
()
set_category
(
CAT_INPUT
)
set_subcategory
(
SUBCAT_INPUT_VCODEC
)
set_shortname
(
N_
(
"Fake"
)
)
set_description
(
N_
(
"Fake video decoder"
)
)
set_capability
(
"decoder"
,
1000
)
set_callbacks
(
OpenDecoder
,
CloseDecoder
)
add_shortcut
(
"fake"
)
add_file
(
"fake-file"
,
""
,
NULL
,
FILE_TEXT
,
FILE_LONGTEXT
,
false
)
add_integer
(
"fake-file-reload"
,
0
,
NULL
,
RELOAD_TEXT
,
RELOAD_LONGTEXT
,
false
)
add_integer
(
"fake-width"
,
0
,
NULL
,
WIDTH_TEXT
,
WIDTH_LONGTEXT
,
true
)
add_integer
(
"fake-height"
,
0
,
NULL
,
HEIGHT_TEXT
,
HEIGHT_LONGTEXT
,
true
)
add_bool
(
"fake-keep-ar"
,
false
,
NULL
,
KEEP_AR_TEXT
,
KEEP_AR_LONGTEXT
,
true
)
add_string
(
"fake-aspect-ratio"
,
""
,
NULL
,
ASPECT_RATIO_TEXT
,
ASPECT_RATIO_LONGTEXT
,
true
)
add_bool
(
"fake-deinterlace"
,
false
,
NULL
,
DEINTERLACE_TEXT
,
DEINTERLACE_LONGTEXT
,
false
)
add_string
(
"fake-deinterlace-module"
,
"deinterlace"
,
NULL
,
DEINTERLACE_MODULE_TEXT
,
DEINTERLACE_MODULE_LONGTEXT
,
false
)
change_string_list
(
ppsz_deinterlace_type
,
0
,
0
)
add_string
(
"fake-chroma"
,
"I420"
,
NULL
,
CHROMA_TEXT
,
CHROMA_LONGTEXT
,
true
)
vlc_module_end
()
struct
decoder_sys_t
{
picture_t
*
p_image
;
vlc_mutex_t
lock
;
bool
b_reload
;
mtime_t
i_reload
;
mtime_t
i_next
;
};
/*****************************************************************************
* OpenDecoder: probe the decoder and return score
*****************************************************************************/
static
int
OpenDecoder
(
vlc_object_t
*
p_this
)
{
decoder_t
*
p_dec
=
(
decoder_t
*
)
p_this
;
image_handler_t
*
p_handler
;
video_format_t
fmt_in
,
fmt_out
;
picture_t
*
p_image
;
char
*
psz_file
,
*
psz_chroma
,
*
psz_string
;
bool
b_keep_ar
;
int
i_aspect
=
0
;
int
i_int
;
if
(
p_dec
->
fmt_in
.
i_codec
!=
VLC_FOURCC
(
'f'
,
'a'
,
'k'
,
'e'
)
)
{
return
VLC_EGENERIC
;
}
p_dec
->
p_sys
=
calloc
(
1
,
sizeof
(
*
p_dec
->
p_sys
)
);
if
(
!
p_dec
->
p_sys
)
return
VLC_ENOMEM
;
psz_file
=
var_CreateGetNonEmptyStringCommand
(
p_dec
,
"fake-file"
);
if
(
!
psz_file
)
{
msg_Err
(
p_dec
,
"specify a file with --fake-file=..."
);
free
(
p_dec
->
p_sys
);
return
VLC_EGENERIC
;
}
memset
(
&
fmt_in
,
0
,
sizeof
(
fmt_in
)
);
memset
(
&
fmt_out
,
0
,
sizeof
(
fmt_out
)
);
i_int
=
var_CreateGetIntegerCommand
(
p_dec
,
"fake-file-reload"
);
if
(
i_int
>
0
)
{
p_dec
->
p_sys
->
b_reload
=
true
;
p_dec
->
p_sys
->
i_reload
=
(
mtime_t
)(
i_int
*
1000000
);
p_dec
->
p_sys
->
i_next
=
(
mtime_t
)(
p_dec
->
p_sys
->
i_reload
+
mdate
());
}
psz_chroma
=
var_CreateGetString
(
p_dec
,
"fake-chroma"
);
fmt_out
.
i_chroma
=
vlc_fourcc_GetCodecFromString
(
VIDEO_ES
,
psz_chroma
);
if
(
!
fmt_out
.
i_chroma
)
{
msg_Warn
(
p_dec
,
"Invalid chroma (%s). Using I420."
,
psz_chroma
);
fmt_out
.
i_chroma
=
VLC_CODEC_I420
;
}
free
(
psz_chroma
);
var_Create
(
p_dec
,
"fake-width"
,
VLC_VAR_INTEGER
|
VLC_VAR_DOINHERIT
);
var_Create
(
p_dec
,
"fake-height"
,
VLC_VAR_INTEGER
|
VLC_VAR_DOINHERIT
);
psz_string
=
var_CreateGetString
(
p_dec
,
"fake-aspect-ratio"
);
if
(
psz_string
)
{
char
*
psz_parser
=
strchr
(
psz_string
,
':'
);
if
(
psz_parser
)
{
*
psz_parser
++
=
'\0'
;
i_aspect
=
atoi
(
psz_string
)
*
VOUT_ASPECT_FACTOR
/
atoi
(
psz_parser
);
}
free
(
psz_string
);
}
b_keep_ar
=
var_CreateGetBool
(
p_dec
,
"fake-keep-ar"
);
if
(
!
b_keep_ar
)
{
fmt_out
.
i_width
=
var_GetInteger
(
p_dec
,
"fake-width"
);
fmt_out
.
i_height
=
var_GetInteger
(
p_dec
,
"fake-height"
);
}
p_handler
=
image_HandlerCreate
(
p_dec
);
p_image
=
image_ReadUrl
(
p_handler
,
psz_file
,
&
fmt_in
,
&
fmt_out
);
image_HandlerDelete
(
p_handler
);
if
(
p_image
==
NULL
)
{
msg_Err
(
p_dec
,
"unable to read image file %s"
,
psz_file
);
free
(
psz_file
);
free
(
p_dec
->
p_sys
);
return
VLC_EGENERIC
;
}
msg_Dbg
(
p_dec
,
"file %s loaded successfully"
,
psz_file
);
free
(
psz_file
);
if
(
b_keep_ar
)
{
picture_t
*
p_old
=
p_image
;
int
i_width
,
i_height
;
i_width
=
var_GetInteger
(
p_dec
,
"fake-width"
);
i_height
=
var_GetInteger
(
p_dec
,
"fake-height"
);
if
(
i_width
&&
i_height
)
{
int
i_image_ar
=
fmt_out
.
i_width
*
VOUT_ASPECT_FACTOR
/
fmt_out
.
i_height
;
int
i_region_ar
=
i_width
*
VOUT_ASPECT_FACTOR
/
i_height
;
fmt_in
=
fmt_out
;
if
(
i_aspect
==
i_image_ar
)
{
fmt_out
.
i_width
=
i_width
;
fmt_out
.
i_height
=
i_height
;
}
else
if
(
i_image_ar
>
i_region_ar
)
{
fmt_out
.
i_width
=
i_width
;
fmt_out
.
i_height
=
i_width
*
VOUT_ASPECT_FACTOR
/
i_image_ar
;
i_aspect
=
i_image_ar
;
}
else
{
fmt_out
.
i_height
=
i_height
;
fmt_out
.
i_width
=
i_height
*
i_image_ar
/
VOUT_ASPECT_FACTOR
;
i_aspect
=
i_image_ar
;
}
p_handler
=
image_HandlerCreate
(
p_dec
);
p_image
=
image_Convert
(
p_handler
,
p_old
,
&
fmt_in
,
&
fmt_out
);
image_HandlerDelete
(
p_handler
);
if
(
p_image
==
NULL
)
{
msg_Warn
(
p_dec
,
"couldn't load resizing module"
);
p_image
=
p_old
;
fmt_out
=
fmt_in
;
}
else
{
picture_Release
(
p_old
);
}
}
}
if
(
i_aspect
)
{
fmt_out
.
i_sar_num
=
i_aspect
*
fmt_out
.
i_height
;
fmt_out
.
i_sar_den
=
VOUT_ASPECT_FACTOR
*
fmt_out
.
i_width
;
}
else
{
fmt_out
.
i_sar_num
=
1
;
fmt_out
.
i_sar_den
=
1
;
}
if
(
var_CreateGetBool
(
p_dec
,
"fake-deinterlace"
)
)
{
picture_t
*
p_old
=
p_image
;
psz_string
=
var_CreateGetString
(
p_dec
,
"fake-deinterlace-module"
);
p_handler
=
image_HandlerCreate
(
p_dec
);
p_image
=
image_Filter
(
p_handler
,
p_old
,
&
fmt_out
,
psz_string
);
image_HandlerDelete
(
p_handler
);
free
(
psz_string
);
if
(
p_image
==
NULL
)
{
msg_Warn
(
p_dec
,
"couldn't load deinterlace module"
);
p_image
=
p_old
;
}
else
{
picture_Release
(
p_old
);
}
}
/* Set output properties */
p_dec
->
fmt_out
.
i_cat
=
VIDEO_ES
;
p_dec
->
fmt_out
.
i_codec
=
fmt_out
.
i_chroma
;
p_dec
->
fmt_out
.
video
=
fmt_out
;
/* Set callbacks */
p_dec
->
pf_decode_video
=
DecodeBlock
;
p_dec
->
p_sys
->
p_image
=
p_image
;
vlc_mutex_init
(
&
p_dec
->
p_sys
->
lock
);
/* Add the callback when every variables are available */
var_AddCallback
(
p_dec
,
"fake-file"
,
FakeCallback
,
p_dec
);
var_AddCallback
(
p_dec
,
"fake-file-reload"
,
FakeCallback
,
p_dec
);
return
VLC_SUCCESS
;
}
/****************************************************************************
* DecodeBlock: the whole thing
****************************************************************************/
static
picture_t
*
DecodeBlock
(
decoder_t
*
p_dec
,
block_t
**
pp_block
)
{
decoder_sys_t
*
p_sys
=
(
decoder_sys_t
*
)
p_dec
->
p_sys
;
picture_t
*
p_pic
;
if
(
pp_block
==
NULL
||
!*
pp_block
)
return
NULL
;
p_pic
=
decoder_NewPicture
(
p_dec
);
if
(
p_pic
==
NULL
)
{
msg_Err
(
p_dec
,
"cannot get picture"
);
goto
error
;
}
if
(
p_sys
->
b_reload
&&
(
mdate
()
>=
p_sys
->
i_next
)
)
{
var_TriggerCallback
(
p_dec
,
"fake-file"
);
/* next period */
p_sys
->
i_next
=
(
mtime_t
)(
p_sys
->
i_reload
+
mdate
());
}
vlc_mutex_lock
(
&
p_dec
->
p_sys
->
lock
);
picture_Copy
(
p_pic
,
p_dec
->
p_sys
->
p_image
);
vlc_mutex_unlock
(
&
p_dec
->
p_sys
->
lock
);
p_pic
->
date
=
(
*
pp_block
)
->
i_pts
;
error:
block_Release
(
*
pp_block
);
*
pp_block
=
NULL
;
return
p_pic
;
}
/*****************************************************************************
* CloseDecoder: fake decoder destruction
*****************************************************************************/
static
void
CloseDecoder
(
vlc_object_t
*
p_this
)
{
decoder_t
*
p_dec
=
(
decoder_t
*
)
p_this
;
picture_t
*
p_image
=
p_dec
->
p_sys
->
p_image
;
var_DelCallback
(
p_dec
,
"fake-file"
,
FakeCallback
,
p_dec
);
var_DelCallback
(
p_dec
,
"fake-file-reload"
,
FakeCallback
,
p_dec
);
if
(
p_image
!=
NULL
)
picture_Release
(
p_image
);
vlc_mutex_destroy
(
&
p_dec
->
p_sys
->
lock
);
free
(
p_dec
->
p_sys
);
}
/*****************************************************************************
* FakeCallback: Image source change callback.
*****************************************************************************/
static
int
FakeCallback
(
vlc_object_t
*
p_this
,
char
const
*
psz_var
,
vlc_value_t
oldval
,
vlc_value_t
newval
,
void
*
p_data
)
{
VLC_UNUSED
(
p_this
);
VLC_UNUSED
(
oldval
);
decoder_t
*
p_dec
=
(
decoder_t
*
)
p_data
;
if
(
!
strcmp
(
psz_var
,
"fake-file"
)
)
{
image_handler_t
*
p_handler
;
picture_t
*
p_new_image
;
video_format_t
fmt_in
,
fmt_out
;
char
*
psz_file
=
newval
.
psz_string
;
picture_t
*
p_image
;
vlc_mutex_lock
(
&
p_dec
->
p_sys
->
lock
);
p_image
=
p_dec
->
p_sys
->
p_image
;
if
(
!
psz_file
||
!*
psz_file
)
{
msg_Err
(
p_dec
,
"fake-file value must be non empty."
);
vlc_mutex_unlock
(
&
p_dec
->
p_sys
->
lock
);
return
VLC_EGENERIC
;
}
msg_Dbg
(
p_dec
,
"Changing fake-file to %s."
,
psz_file
);
memset
(
&
fmt_in
,
0
,
sizeof
(
fmt_in
)
);
fmt_out
=
p_dec
->
fmt_out
.
video
;
p_handler
=
image_HandlerCreate
(
p_dec
);
p_new_image
=
image_ReadUrl
(
p_handler
,
psz_file
,
&
fmt_in
,
&
fmt_out
);
image_HandlerDelete
(
p_handler
);
if
(
!
p_new_image
)
{
msg_Err
(
p_dec
,
"error while reading image (%s)"
,
psz_file
);
vlc_mutex_unlock
(
&
p_dec
->
p_sys
->
lock
);
return
VLC_EGENERIC
;
}
p_dec
->
p_sys
->
p_image
=
p_new_image
;
picture_Release
(
p_image
);
vlc_mutex_unlock
(
&
p_dec
->
p_sys
->
lock
);
}
else
if
(
!
strcmp
(
psz_var
,
"fake-file-reload"
)
)
{
if
(
newval
.
i_int
>
0
)
{
p_dec
->
p_sys
->
b_reload
=
true
;
p_dec
->
p_sys
->
i_reload
=
(
mtime_t
)(
newval
.
i_int
*
1000000
);
p_dec
->
p_sys
->
i_next
=
(
mtime_t
)(
p_dec
->
p_sys
->
i_reload
+
mdate
());
}
else
{
p_dec
->
p_sys
->
b_reload
=
false
;
}
}
return
VLC_SUCCESS
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment