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
4e797456
Commit
4e797456
authored
Oct 23, 2008
by
Laurent Aimar
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added decoder_New/Delete/Link/UnlinkPicture helpers.
parent
f0e63c5d
Changes
20
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
90 additions
and
45 deletions
+90
-45
include/vlc_codec.h
include/vlc_codec.h
+37
-14
modules/codec/avcodec/video.c
modules/codec/avcodec/video.c
+5
-5
modules/codec/cdg.c
modules/codec/cdg.c
+1
-1
modules/codec/dirac.c
modules/codec/dirac.c
+1
-1
modules/codec/dmo/dmo.c
modules/codec/dmo/dmo.c
+1
-1
modules/codec/fake.c
modules/codec/fake.c
+1
-1
modules/codec/libmpeg2.c
modules/codec/libmpeg2.c
+5
-5
modules/codec/mash.cpp
modules/codec/mash.cpp
+1
-1
modules/codec/png.c
modules/codec/png.c
+1
-1
modules/codec/quicktime.c
modules/codec/quicktime.c
+1
-1
modules/codec/rawvideo.c
modules/codec/rawvideo.c
+1
-1
modules/codec/realvideo.c
modules/codec/realvideo.c
+1
-1
modules/codec/schroedinger.c
modules/codec/schroedinger.c
+2
-2
modules/codec/sdl_image.c
modules/codec/sdl_image.c
+1
-1
modules/codec/tarkin.c
modules/codec/tarkin.c
+1
-1
modules/codec/theora.c
modules/codec/theora.c
+1
-1
modules/codec/xvmc/xxmc.c
modules/codec/xvmc/xxmc.c
+4
-4
modules/misc/stats/decoder.c
modules/misc/stats/decoder.c
+1
-1
src/input/decoder.c
src/input/decoder.c
+20
-2
src/libvlccore.sym
src/libvlccore.sym
+4
-0
No files found.
include/vlc_codec.h
View file @
4e797456
...
...
@@ -81,29 +81,28 @@ struct decoder_t
* globaly, not necessary for the current packet */
block_t
*
(
*
pf_get_cc
)
(
decoder_t
*
,
bool
pb_present
[
4
]
);
/*
* Buffers allocation
*/
/* Video output callbacks */
picture_t
*
(
*
pf_vout_buffer_new
)
(
decoder_t
*
);
void
(
*
pf_vout_buffer_del
)
(
decoder_t
*
,
picture_t
*
);
void
(
*
pf_picture_link
)
(
decoder_t
*
,
picture_t
*
);
void
(
*
pf_picture_unlink
)
(
decoder_t
*
,
picture_t
*
);
/*
* Owner fields
* XXX You MUST not use them directly.
*/
/* Video output callbacks
* XXX use decoder_NewPicture/decoder_DeletePicture
* and decoder_LinkPicture/decoder_UnlinkPicture */
picture_t
*
(
*
pf_vout_buffer_new
)(
decoder_t
*
);
void
(
*
pf_vout_buffer_del
)(
decoder_t
*
,
picture_t
*
);
void
(
*
pf_picture_link
)
(
decoder_t
*
,
picture_t
*
);
void
(
*
pf_picture_unlink
)
(
decoder_t
*
,
picture_t
*
);
/* Audio output callbacks
* XXX use decoder_NewAudioBuffer/decoder_DeleteAudioBuffer */
aout_buffer_t
*
(
*
pf_aout_buffer_new
)
(
decoder_t
*
,
int
);
void
(
*
pf_aout_buffer_del
)
(
decoder_t
*
,
aout_buffer_t
*
);
aout_buffer_t
*
(
*
pf_aout_buffer_new
)
(
decoder_t
*
,
int
);
void
(
*
pf_aout_buffer_del
)
(
decoder_t
*
,
aout_buffer_t
*
);
/* SPU output callbacks
* XXX use decoder_NewSubpicture and decoder_DeleteSubpicture */
subpicture_t
*
(
*
pf_spu_buffer_new
)
(
decoder_t
*
);
void
(
*
pf_spu_buffer_del
)
(
decoder_t
*
,
subpicture_t
*
);
subpicture_t
*
(
*
pf_spu_buffer_new
)(
decoder_t
*
);
void
(
*
pf_spu_buffer_del
)(
decoder_t
*
,
subpicture_t
*
);
/* Input attachments
* XXX use decoder_GetInputAttachments */
...
...
@@ -166,6 +165,30 @@ struct encoder_t
*/
/**
* This function will return a new picture usable by a decoder as an output
* buffer. You have to release it using decoder_DeletePicture or by returning
* it to the caller as a pf_decode_video return value.
*/
VLC_EXPORT
(
picture_t
*
,
decoder_NewPicture
,
(
decoder_t
*
)
);
/**
* This function will release a picture create by decoder_NewPicture.
*/
VLC_EXPORT
(
void
,
decoder_DeletePicture
,
(
decoder_t
*
,
picture_t
*
p_picture
)
);
/**
* This function will increase the picture reference count.
* (picture_Hold is not usable.)
*/
VLC_EXPORT
(
void
,
decoder_LinkPicture
,
(
decoder_t
*
,
picture_t
*
)
);
/**
* This function will decrease the picture reference count.
* (picture_Release is not usable.)
*/
VLC_EXPORT
(
void
,
decoder_UnlinkPicture
,
(
decoder_t
*
,
picture_t
*
)
);
/**
* This function will return a new audio buffer usable by a decoder as an
* output buffer. You have to release it using decoder_DeleteAudioBuffer
...
...
modules/codec/avcodec/video.c
View file @
4e797456
...
...
@@ -165,7 +165,7 @@ static inline picture_t *ffmpeg_NewPictBuf( decoder_t *p_dec,
p_dec
->
fmt_out
.
video
.
i_frame_rate_base
=
p_context
->
time_base
.
num
;
}
p_pic
=
p_dec
->
pf_vout_buffer_new
(
p_dec
);
p_pic
=
decoder_NewPicture
(
p_dec
);
return
p_pic
;
}
...
...
@@ -609,7 +609,7 @@ picture_t *DecodeVideo( decoder_t *p_dec, block_t **pp_block )
/* Do not display the picture */
p_pic
=
(
picture_t
*
)
p_sys
->
p_ff_pic
->
opaque
;
if
(
!
b_drawpicture
&&
p_pic
)
p_dec
->
pf_vout_buffer_del
(
p_dec
,
p_pic
);
decoder_DeletePicture
(
p_dec
,
p_pic
);
ffmpeg_NextPts
(
p_dec
);
continue
;
...
...
@@ -699,7 +699,7 @@ picture_t *DecodeVideo( decoder_t *p_dec, block_t **pp_block )
}
else
{
p_dec
->
pf_vout_buffer_del
(
p_dec
,
p_pic
);
decoder_DeletePicture
(
p_dec
,
p_pic
);
}
}
...
...
@@ -914,7 +914,7 @@ static int ffmpeg_GetFrameBuf( struct AVCodecContext *p_context,
if
(
p_ff_pic
->
reference
!=
0
)
{
p_dec
->
pf_picture_link
(
p_dec
,
p_pic
);
decoder_LinkPicture
(
p_dec
,
p_pic
);
}
/* FIXME what is that, should give good value */
...
...
@@ -996,7 +996,7 @@ static void ffmpeg_ReleaseFrameBuf( struct AVCodecContext *p_context,
if
(
p_ff_pic
->
reference
!=
0
)
{
p_dec
->
pf_picture_unlink
(
p_dec
,
p_pic
);
decoder_UnlinkPicture
(
p_dec
,
p_pic
);
}
}
...
...
modules/codec/cdg.c
View file @
4e797456
...
...
@@ -153,7 +153,7 @@ static picture_t *Decode( decoder_t *p_dec, block_t **pp_block )
}
/* Get a new picture */
p_pic
=
p_dec
->
pf_vout_buffer_new
(
p_dec
);
p_pic
=
decoder_NewPicture
(
p_dec
);
if
(
!
p_pic
)
goto
error
;
...
...
modules/codec/dirac.c
View file @
4e797456
...
...
@@ -168,7 +168,7 @@ static picture_t *GetNewPicture( decoder_t *p_dec )
p_sys
->
p_dirac
->
src_params
.
frame_rate
.
denominator
;
/* Get a new picture */
p_pic
=
p_dec
->
pf_vout_buffer_new
(
p_dec
);
p_pic
=
decoder_NewPicture
(
p_dec
);
if
(
p_pic
==
NULL
)
return
NULL
;
p_pic
->
b_progressive
=
!
p_sys
->
p_dirac
->
src_params
.
source_sampling
;
...
...
modules/codec/dmo/dmo.c
View file @
4e797456
...
...
@@ -953,7 +953,7 @@ static void *DecBlock( decoder_t *p_dec, block_t **pp_block )
if
(
p_dec
->
fmt_out
.
i_cat
==
VIDEO_ES
)
{
/* Get a new picture */
picture_t
*
p_pic
=
p_dec
->
pf_vout_buffer_new
(
p_dec
);
picture_t
*
p_pic
=
decoder_NewPicture
(
p_dec
);
if
(
!
p_pic
)
return
NULL
;
CopyPicture
(
p_pic
,
block_out
.
p_buffer
);
...
...
modules/codec/fake.c
View file @
4e797456
...
...
@@ -345,7 +345,7 @@ static picture_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
picture_t
*
p_pic
;
if
(
pp_block
==
NULL
||
!*
pp_block
)
return
NULL
;
p_pic
=
p_dec
->
pf_vout_buffer_new
(
p_dec
);
p_pic
=
decoder_NewPicture
(
p_dec
);
if
(
p_pic
==
NULL
)
{
msg_Err
(
p_dec
,
"cannot get picture"
);
...
...
modules/codec/libmpeg2.c
View file @
4e797456
...
...
@@ -341,7 +341,7 @@ static picture_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
/* For some reason, libmpeg2 will put this pic twice in
* discard_picture. This can be considered a bug in libmpeg2. */
p_dec
->
pf_picture_link
(
p_dec
,
p_pic
);
decoder_LinkPicture
(
p_dec
,
p_pic
);
if
(
p_sys
->
p_synchro
)
{
...
...
@@ -509,8 +509,8 @@ static picture_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
if
(
p_sys
->
p_info
->
discard_fbuf
&&
p_sys
->
p_info
->
discard_fbuf
->
id
)
{
p_dec
->
pf_picture_unlink
(
p_dec
,
p_sys
->
p_info
->
discard_fbuf
->
id
);
decoder_UnlinkPicture
(
p_dec
,
p_sys
->
p_info
->
discard_fbuf
->
id
);
}
/* For still frames */
...
...
@@ -639,7 +639,7 @@ static picture_t *GetNewPicture( decoder_t *p_dec, uint8_t **pp_buf )
VLC_FOURCC
(
'I'
,
'4'
,
'2'
,
'0'
)
:
VLC_FOURCC
(
'I'
,
'4'
,
'2'
,
'2'
);
/* Get a new picture */
p_pic
=
p_dec
->
pf_vout_buffer_new
(
p_dec
);
p_pic
=
decoder_NewPicture
(
p_dec
);
if
(
p_pic
==
NULL
)
return
NULL
;
...
...
@@ -650,7 +650,7 @@ static picture_t *GetNewPicture( decoder_t *p_dec, uint8_t **pp_buf )
p_pic
->
i_nb_fields
=
p_sys
->
p_info
->
current_picture
!=
NULL
?
p_sys
->
p_info
->
current_picture
->
nb_fields
:
2
;
p_dec
->
pf_picture_link
(
p_dec
,
p_pic
);
decoder_LinkPicture
(
p_dec
,
p_pic
);
pp_buf
[
0
]
=
p_pic
->
p
[
0
].
p_pixels
;
pp_buf
[
1
]
=
p_pic
->
p
[
1
].
p_pixels
;
...
...
modules/codec/mash.cpp
View file @
4e797456
...
...
@@ -202,7 +202,7 @@ static void *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
// p_sys->p_decoder->sync();
if
(
p_block
->
i_flags
&
BLOCK_FLAG_END_OF_FRAME
)
{
p_pic
=
p_dec
->
pf_vout_buffer_new
(
p_dec
);
p_pic
=
decoder_NewPicture
(
p_dec
);
if
(
!
p_pic
)
{
block_Release
(
p_block
);
...
...
modules/codec/png.c
View file @
4e797456
...
...
@@ -206,7 +206,7 @@ static picture_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
}
/* Get a new picture */
p_pic
=
p_dec
->
pf_vout_buffer_new
(
p_dec
);
p_pic
=
decoder_NewPicture
(
p_dec
);
if
(
!
p_pic
)
goto
error
;
/* Decode picture */
...
...
modules/codec/quicktime.c
View file @
4e797456
...
...
@@ -924,7 +924,7 @@ static picture_t *DecodeVideo( decoder_t *p_dec, block_t **pp_block )
vlc_mutex_lock
(
&
qt_mutex
);
if
(
(
p_pic
=
p_dec
->
pf_vout_buffer_new
(
p_dec
)
)
)
if
(
(
p_pic
=
decoder_NewPicture
(
p_dec
)
)
)
{
p_sys
->
decpar
.
data
=
(
Ptr
)
p_block
->
p_buffer
;
p_sys
->
decpar
.
bufferSize
=
p_block
->
i_buffer
;
...
...
modules/codec/rawvideo.c
View file @
4e797456
...
...
@@ -289,7 +289,7 @@ static picture_t *DecodeFrame( decoder_t *p_dec, block_t *p_block )
picture_t
*
p_pic
;
/* Get a new picture */
p_pic
=
p_dec
->
pf_vout_buffer_new
(
p_dec
);
p_pic
=
decoder_NewPicture
(
p_dec
);
if
(
!
p_pic
)
{
block_Release
(
p_block
);
...
...
modules/codec/realvideo.c
View file @
4e797456
...
...
@@ -463,7 +463,7 @@ static picture_t *DecodeVideo( decoder_t *p_dec, block_t **pp_block )
vlc_mutex_lock
(
&
rm_mutex
);
p_pic
=
p_dec
->
pf_vout_buffer_new
(
p_dec
);
p_pic
=
decoder_NewPicture
(
p_dec
);
if
(
p_pic
)
{
...
...
modules/codec/schroedinger.c
View file @
4e797456
...
...
@@ -256,7 +256,7 @@ static void SchroFrameFree( SchroFrame *frame, void *priv)
if
(
!
p_free
)
return
;
p_free
->
p_dec
->
pf_vout_buffer_del
(
p_free
->
p_dec
,
p_free
->
p_pic
);
decoder_DeletePicture
(
p_free
->
p_dec
,
p_free
->
p_pic
);
free
(
p_free
);
(
void
)
frame
;
}
...
...
@@ -274,7 +274,7 @@ static SchroFrame *CreateSchroFrameFromPic( decoder_t *p_dec )
if
(
!
p_schroframe
)
return
NULL
;
p_pic
=
p_dec
->
pf_vout_buffer_new
(
p_dec
);
p_pic
=
decoder_NewPicture
(
p_dec
);
if
(
!
p_pic
)
return
NULL
;
...
...
modules/codec/sdl_image.c
View file @
4e797456
...
...
@@ -171,7 +171,7 @@ static picture_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
/
p_surface
->
h
;
/* Get a new picture. */
p_pic
=
p_dec
->
pf_vout_buffer_new
(
p_dec
);
p_pic
=
decoder_NewPicture
(
p_dec
);
if
(
p_pic
==
NULL
)
goto
error
;
switch
(
p_surface
->
format
->
BitsPerPixel
)
...
...
modules/codec/tarkin.c
View file @
4e797456
...
...
@@ -266,7 +266,7 @@ static picture_t *DecodePacket( decoder_t *p_dec, block_t **pp_block,
p_dec
->
fmt_out
.
i_codec
=
i_chroma
;
/* Get a new picture */
if
(
(
p_pic
=
p_dec
->
pf_vout_buffer_new
(
p_dec
))
)
if
(
(
p_pic
=
decoder_NewPicture
(
p_dec
))
)
{
tarkin_CopyPicture
(
p_dec
,
p_pic
,
rgb
,
i_stride
);
...
...
modules/codec/theora.c
View file @
4e797456
...
...
@@ -495,7 +495,7 @@ static picture_t *DecodePacket( decoder_t *p_dec, ogg_packet *p_oggpacket )
return
NULL
;
/* Get a new picture */
p_pic
=
p_dec
->
pf_vout_buffer_new
(
p_dec
);
p_pic
=
decoder_NewPicture
(
p_dec
);
if
(
!
p_pic
)
return
NULL
;
theora_CopyPicture
(
p_dec
,
p_pic
,
&
yuv
);
...
...
modules/codec/xvmc/xxmc.c
View file @
4e797456
...
...
@@ -378,7 +378,7 @@ static picture_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
mpeg2_set_buf
(
p_sys
->
p_mpeg2dec
,
buf
,
p_pic
);
p_pic
->
date
=
0
;
p_dec
->
pf_picture_link
(
p_dec
,
p_pic
);
decoder_LinkPicture
(
p_dec
,
p_pic
);
if
(
p_sys
->
p_synchro
)
{
...
...
@@ -531,7 +531,7 @@ static picture_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
if
(
p_sys
->
p_info
->
discard_fbuf
&&
p_sys
->
p_info
->
discard_fbuf
->
id
)
{
p_dec
->
pf_picture_unlink
(
p_dec
,
p_sys
->
p_info
->
discard_fbuf
->
id
);
decoder_UnlinkPicture
(
p_dec
,
p_sys
->
p_info
->
discard_fbuf
->
id
);
}
/* For still frames */
//if( state == STATE_END && p_pic ) p_pic->b_force = true;
...
...
@@ -703,7 +703,7 @@ static picture_t *GetNewPicture( decoder_t *p_dec, uint8_t **pp_buf )
fflush(p_sys->f_wd_nb);
}
#endif
p_pic
=
p_dec
->
pf_vout_buffer_new
(
p_dec
);
p_pic
=
decoder_NewPicture
(
p_dec
);
if
(
p_pic
==
NULL
)
return
NULL
;
...
...
@@ -716,7 +716,7 @@ static picture_t *GetNewPicture( decoder_t *p_dec, uint8_t **pp_buf )
p_pic
->
format
.
i_frame_rate
=
p_dec
->
fmt_out
.
video
.
i_frame_rate
;
p_pic
->
format
.
i_frame_rate_base
=
p_dec
->
fmt_out
.
video
.
i_frame_rate_base
;
p_dec
->
pf_picture_link
(
p_dec
,
p_pic
);
decoder_LinkPicture
(
p_dec
,
p_pic
);
pp_buf
[
0
]
=
p_pic
->
p
[
0
].
p_pixels
;
pp_buf
[
1
]
=
p_pic
->
p
[
1
].
p_pixels
;
...
...
modules/misc/stats/decoder.c
View file @
4e797456
...
...
@@ -72,7 +72,7 @@ static picture_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
p_dec
->
fmt_out
.
video
.
i_aspect
=
VOUT_ASPECT_FACTOR
;
p_dec
->
fmt_out
.
i_codec
=
VLC_FOURCC
(
'I'
,
'4'
,
'2'
,
'0'
);
p_pic
=
p_dec
->
pf_vout_buffer_new
(
p_dec
);
p_pic
=
decoder_NewPicture
(
p_dec
);
if
(
p_block
->
i_buffer
==
kBufferSize
)
{
...
...
src/input/decoder.c
View file @
4e797456
...
...
@@ -161,6 +161,26 @@ struct decoder_owner_sys_t
/*****************************************************************************
* Public functions
*****************************************************************************/
picture_t
*
decoder_NewPicture
(
decoder_t
*
p_decoder
)
{
picture_t
*
p_picture
=
p_decoder
->
pf_vout_buffer_new
(
p_decoder
);
if
(
!
p_picture
)
msg_Warn
(
p_decoder
,
"can't get output picture"
);
return
p_picture
;
}
void
decoder_DeletePicture
(
decoder_t
*
p_decoder
,
picture_t
*
p_picture
)
{
p_decoder
->
pf_vout_buffer_del
(
p_decoder
,
p_picture
);
}
void
decoder_LinkPicture
(
decoder_t
*
p_decoder
,
picture_t
*
p_picture
)
{
p_decoder
->
pf_picture_link
(
p_decoder
,
p_picture
);
}
void
decoder_UnlinkPicture
(
decoder_t
*
p_decoder
,
picture_t
*
p_picture
)
{
p_decoder
->
pf_picture_unlink
(
p_decoder
,
p_picture
);
}
aout_buffer_t
*
decoder_NewAudioBuffer
(
decoder_t
*
p_decoder
,
int
i_size
)
{
if
(
!
p_decoder
->
pf_aout_buffer_new
)
...
...
@@ -169,8 +189,6 @@ aout_buffer_t *decoder_NewAudioBuffer( decoder_t *p_decoder, int i_size )
}
void
decoder_DeleteAudioBuffer
(
decoder_t
*
p_decoder
,
aout_buffer_t
*
p_buffer
)
{
if
(
!
p_decoder
->
pf_aout_buffer_del
)
return
;
p_decoder
->
pf_aout_buffer_del
(
p_decoder
,
p_buffer
);
}
...
...
src/libvlccore.sym
View file @
4e797456
...
...
@@ -78,11 +78,14 @@ date_Init
date_Move
date_Set
decoder_DeleteAudioBuffer
decoder_DeletePicture
decoder_DeleteSubpicture
decoder_GetDisplayDate
decoder_GetDisplayRate
decoder_GetInputAttachments
decoder_LinkPicture
decoder_NewAudioBuffer
decoder_NewPicture
decoder_NewSubpicture
decoder_SynchroChoose
decoder_SynchroDate
...
...
@@ -93,6 +96,7 @@ decoder_SynchroNewPicture
decoder_SynchroRelease
decoder_SynchroReset
decoder_SynchroTrash
decoder_UnlinkPicture
decode_URI
decode_URI_duplicate
demux_PacketizerDestroy
...
...
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