Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
F
ffmpeg
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Stefan Westerfeld
ffmpeg
Commits
9f90b248
Commit
9f90b248
authored
Jul 28, 2015
by
Vittorio Giovara
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
lavc: Drop deprecated get_buffer related functions
Deprecated in 11/2012.
parent
01bcc2d5
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
5 additions
and
308 deletions
+5
-308
avcodec.h
libavcodec/avcodec.h
+0
-114
pthread_frame.c
libavcodec/pthread_frame.c
+5
-27
utils.c
libavcodec/utils.c
+0
-164
version.h
libavcodec/version.h
+0
-3
No files found.
libavcodec/avcodec.h
View file @
9f90b248
...
...
@@ -1039,18 +1039,6 @@ typedef struct AVPanScan{
#define FF_QSCALE_TYPE_VP56 3
#endif
#if FF_API_GET_BUFFER
#define FF_BUFFER_TYPE_INTERNAL 1
#define FF_BUFFER_TYPE_USER 2 ///< direct rendering buffers (image is (de)allocated by user)
#define FF_BUFFER_TYPE_SHARED 4 ///< Buffer from somewhere else; don't deallocate image (data/base), all other tables are not shared.
#define FF_BUFFER_TYPE_COPY 8 ///< Just a (modified) copy of some other buffer, don't deallocate anything.
#define FF_BUFFER_HINTS_VALID 0x01 // Buffer hints value is meaningful (if 0 ignore).
#define FF_BUFFER_HINTS_READABLE 0x02 // Codec will read from buffer.
#define FF_BUFFER_HINTS_PRESERVE 0x04 // User must not alter buffer content.
#define FF_BUFFER_HINTS_REUSABLE 0x08 // Codec will reuse the buffer (update).
#endif
/**
* The decoder will keep a reference to the frame and may reuse it later.
*/
...
...
@@ -2086,102 +2074,6 @@ typedef struct AVCodecContext {
*/
enum
AVSampleFormat
request_sample_fmt
;
#if FF_API_GET_BUFFER
/**
* Called at the beginning of each frame to get a buffer for it.
*
* The function will set AVFrame.data[], AVFrame.linesize[].
* AVFrame.extended_data[] must also be set, but it should be the same as
* AVFrame.data[] except for planar audio with more channels than can fit
* in AVFrame.data[]. In that case, AVFrame.data[] shall still contain as
* many data pointers as it can hold.
*
* if CODEC_CAP_DR1 is not set then get_buffer() must call
* avcodec_default_get_buffer() instead of providing buffers allocated by
* some other means.
*
* AVFrame.data[] should be 32- or 16-byte-aligned unless the CPU doesn't
* need it. avcodec_default_get_buffer() aligns the output buffer properly,
* but if get_buffer() is overridden then alignment considerations should
* be taken into account.
*
* @see avcodec_default_get_buffer()
*
* Video:
*
* If pic.reference is set then the frame will be read later by libavcodec.
* avcodec_align_dimensions2() should be used to find the required width and
* height, as they normally need to be rounded up to the next multiple of 16.
*
* If frame multithreading is used and thread_safe_callbacks is set,
* it may be called from a different thread, but not from more than one at
* once. Does not need to be reentrant.
*
* @see release_buffer(), reget_buffer()
* @see avcodec_align_dimensions2()
*
* Audio:
*
* Decoders request a buffer of a particular size by setting
* AVFrame.nb_samples prior to calling get_buffer(). The decoder may,
* however, utilize only part of the buffer by setting AVFrame.nb_samples
* to a smaller value in the output frame.
*
* Decoders cannot use the buffer after returning from
* avcodec_decode_audio4(), so they will not call release_buffer(), as it
* is assumed to be released immediately upon return. In some rare cases,
* a decoder may need to call get_buffer() more than once in a single
* call to avcodec_decode_audio4(). In that case, when get_buffer() is
* called again after it has already been called once, the previously
* acquired buffer is assumed to be released at that time and may not be
* reused by the decoder.
*
* As a convenience, av_samples_get_buffer_size() and
* av_samples_fill_arrays() in libavutil may be used by custom get_buffer()
* functions to find the required data size and to fill data pointers and
* linesize. In AVFrame.linesize, only linesize[0] may be set for audio
* since all planes must be the same size.
*
* @see av_samples_get_buffer_size(), av_samples_fill_arrays()
*
* - encoding: unused
* - decoding: Set by libavcodec, user can override.
*
* @deprecated use get_buffer2()
*/
attribute_deprecated
int
(
*
get_buffer
)(
struct
AVCodecContext
*
c
,
AVFrame
*
pic
);
/**
* Called to release buffers which were allocated with get_buffer.
* A released buffer can be reused in get_buffer().
* pic.data[*] must be set to NULL.
* May be called from a different thread if frame multithreading is used,
* but not by more than one thread at once, so does not need to be reentrant.
* - encoding: unused
* - decoding: Set by libavcodec, user can override.
*
* @deprecated custom freeing callbacks should be set from get_buffer2()
*/
attribute_deprecated
void
(
*
release_buffer
)(
struct
AVCodecContext
*
c
,
AVFrame
*
pic
);
/**
* Called at the beginning of a frame to get cr buffer for it.
* Buffer type (size, hints) must be the same. libavcodec won't check it.
* libavcodec will pass previous buffer in pic, function should return
* same buffer or new buffer with old frame "painted" into it.
* If pic.data[0] == NULL must behave like get_buffer().
* if CODEC_CAP_DR1 is not set then reget_buffer() must call
* avcodec_default_reget_buffer() instead of providing buffers allocated by
* some other means.
* - encoding: unused
* - decoding: Set by libavcodec, user can override.
*/
attribute_deprecated
int
(
*
reget_buffer
)(
struct
AVCodecContext
*
c
,
AVFrame
*
pic
);
#endif
/**
* This callback is called at the beginning of each frame to get data
* buffer(s) for it. There may be one contiguous buffer for all the data or
...
...
@@ -3766,12 +3658,6 @@ AVCodec *avcodec_find_decoder(enum AVCodecID id);
*/
AVCodec
*
avcodec_find_decoder_by_name
(
const
char
*
name
);
#if FF_API_GET_BUFFER
attribute_deprecated
int
avcodec_default_get_buffer
(
AVCodecContext
*
s
,
AVFrame
*
pic
);
attribute_deprecated
void
avcodec_default_release_buffer
(
AVCodecContext
*
s
,
AVFrame
*
pic
);
attribute_deprecated
int
avcodec_default_reget_buffer
(
AVCodecContext
*
s
,
AVFrame
*
pic
);
#endif
/**
* The default callback for AVCodecContext.get_buffer2(). It is made public so
* it can be called by custom get_buffer2() implementations for decoders without
...
...
libavcodec/pthread_frame.c
View file @
9f90b248
...
...
@@ -242,12 +242,6 @@ static int update_context_from_user(AVCodecContext *dst, AVCodecContext *src)
dst
->
draw_horiz_band
=
src
->
draw_horiz_band
;
dst
->
get_buffer2
=
src
->
get_buffer2
;
#if FF_API_GET_BUFFER
FF_DISABLE_DEPRECATION_WARNINGS
dst
->
get_buffer
=
src
->
get_buffer
;
dst
->
release_buffer
=
src
->
release_buffer
;
FF_ENABLE_DEPRECATION_WARNINGS
#endif
dst
->
opaque
=
src
->
opaque
;
dst
->
debug
=
src
->
debug
;
...
...
@@ -340,13 +334,8 @@ static int submit_packet(PerThreadContext *p, AVPacket *avpkt)
* and it calls back to the client here.
*/
FF_DISABLE_DEPRECATION_WARNINGS
if
(
!
p
->
avctx
->
thread_safe_callbacks
&&
(
#if FF_API_GET_BUFFER
p
->
avctx
->
get_buffer
||
#endif
p
->
avctx
->
get_buffer2
!=
avcodec_default_get_buffer2
))
{
FF_ENABLE_DEPRECATION_WARNINGS
if
(
!
p
->
avctx
->
thread_safe_callbacks
&&
p
->
avctx
->
get_buffer2
!=
avcodec_default_get_buffer2
)
{
while
(
p
->
state
!=
STATE_SETUP_FINISHED
&&
p
->
state
!=
STATE_INPUT_READY
)
{
pthread_mutex_lock
(
&
p
->
progress_mutex
);
while
(
p
->
state
==
STATE_SETTING_UP
)
...
...
@@ -728,13 +717,8 @@ int ff_thread_get_buffer(AVCodecContext *avctx, ThreadFrame *f, int flags)
}
pthread_mutex_lock
(
&
p
->
parent
->
buffer_mutex
);
FF_DISABLE_DEPRECATION_WARNINGS
if
(
avctx
->
thread_safe_callbacks
||
(
#if FF_API_GET_BUFFER
!
avctx
->
get_buffer
&&
#endif
avctx
->
get_buffer2
==
avcodec_default_get_buffer2
))
{
FF_ENABLE_DEPRECATION_WARNINGS
if
(
avctx
->
thread_safe_callbacks
||
avctx
->
get_buffer2
==
avcodec_default_get_buffer2
)
{
err
=
ff_get_buffer
(
avctx
,
f
->
f
,
flags
);
}
else
{
p
->
requested_frame
=
f
->
f
;
...
...
@@ -767,15 +751,9 @@ void ff_thread_release_buffer(AVCodecContext *avctx, ThreadFrame *f)
PerThreadContext
*
p
=
avctx
->
internal
->
thread_ctx
;
FrameThreadContext
*
fctx
;
AVFrame
*
dst
,
*
tmp
;
FF_DISABLE_DEPRECATION_WARNINGS
int
can_direct_free
=
!
(
avctx
->
active_thread_type
&
FF_THREAD_FRAME
)
||
avctx
->
thread_safe_callbacks
||
(
#if FF_API_GET_BUFFER
!
avctx
->
get_buffer
&&
#endif
avctx
->
get_buffer2
==
avcodec_default_get_buffer2
);
FF_ENABLE_DEPRECATION_WARNINGS
avctx
->
get_buffer2
==
avcodec_default_get_buffer2
;
if
(
!
f
->
f
||
!
f
->
f
->
buf
[
0
])
return
;
...
...
libavcodec/utils.c
View file @
9f90b248
...
...
@@ -514,12 +514,6 @@ int avcodec_default_get_buffer2(AVCodecContext *avctx, AVFrame *frame, int flags
if
((
ret
=
update_frame_pool
(
avctx
,
frame
))
<
0
)
return
ret
;
#if FF_API_GET_BUFFER
FF_DISABLE_DEPRECATION_WARNINGS
frame
->
type
=
FF_BUFFER_TYPE_INTERNAL
;
FF_ENABLE_DEPRECATION_WARNINGS
#endif
switch
(
avctx
->
codec_type
)
{
case
AVMEDIA_TYPE_VIDEO
:
return
video_get_buffer
(
avctx
,
frame
);
...
...
@@ -530,34 +524,6 @@ FF_ENABLE_DEPRECATION_WARNINGS
}
}
#if FF_API_GET_BUFFER
FF_DISABLE_DEPRECATION_WARNINGS
int
avcodec_default_get_buffer
(
AVCodecContext
*
avctx
,
AVFrame
*
frame
)
{
return
avcodec_default_get_buffer2
(
avctx
,
frame
,
0
);
}
typedef
struct
CompatReleaseBufPriv
{
AVCodecContext
avctx
;
AVFrame
frame
;
}
CompatReleaseBufPriv
;
static
void
compat_free_buffer
(
void
*
opaque
,
uint8_t
*
data
)
{
CompatReleaseBufPriv
*
priv
=
opaque
;
if
(
priv
->
avctx
.
release_buffer
)
priv
->
avctx
.
release_buffer
(
&
priv
->
avctx
,
&
priv
->
frame
);
av_freep
(
&
priv
);
}
static
void
compat_release_buffer
(
void
*
opaque
,
uint8_t
*
data
)
{
AVBufferRef
*
buf
=
opaque
;
av_buffer_unref
(
&
buf
);
}
FF_ENABLE_DEPRECATION_WARNINGS
#endif
int
ff_decode_frame_props
(
AVCodecContext
*
avctx
,
AVFrame
*
frame
)
{
AVPacket
*
pkt
=
avctx
->
internal
->
pkt
;
...
...
@@ -675,123 +641,6 @@ int ff_get_buffer(AVCodecContext *avctx, AVFrame *frame, int flags)
}
else
avctx
->
sw_pix_fmt
=
avctx
->
pix_fmt
;
#if FF_API_GET_BUFFER
FF_DISABLE_DEPRECATION_WARNINGS
/*
* Wrap an old get_buffer()-allocated buffer in an bunch of AVBuffers.
* We wrap each plane in its own AVBuffer. Each of those has a reference to
* a dummy AVBuffer as its private data, unreffing it on free.
* When all the planes are freed, the dummy buffer's free callback calls
* release_buffer().
*/
if
(
avctx
->
get_buffer
)
{
CompatReleaseBufPriv
*
priv
=
NULL
;
AVBufferRef
*
dummy_buf
=
NULL
;
int
planes
,
i
,
ret
;
if
(
flags
&
AV_GET_BUFFER_FLAG_REF
)
frame
->
reference
=
1
;
ret
=
avctx
->
get_buffer
(
avctx
,
frame
);
if
(
ret
<
0
)
return
ret
;
/* return if the buffers are already set up
* this would happen e.g. when a custom get_buffer() calls
* avcodec_default_get_buffer
*/
if
(
frame
->
buf
[
0
])
return
0
;
priv
=
av_mallocz
(
sizeof
(
*
priv
));
if
(
!
priv
)
{
ret
=
AVERROR
(
ENOMEM
);
goto
fail
;
}
priv
->
avctx
=
*
avctx
;
priv
->
frame
=
*
frame
;
dummy_buf
=
av_buffer_create
(
NULL
,
0
,
compat_free_buffer
,
priv
,
0
);
if
(
!
dummy_buf
)
{
ret
=
AVERROR
(
ENOMEM
);
goto
fail
;
}
#define WRAP_PLANE(ref_out, data, data_size) \
do { \
AVBufferRef *dummy_ref = av_buffer_ref(dummy_buf); \
if (!dummy_ref) { \
ret = AVERROR(ENOMEM); \
goto fail; \
} \
ref_out = av_buffer_create(data, data_size, compat_release_buffer, \
dummy_ref, 0); \
if (!ref_out) { \
av_buffer_unref(&dummy_ref); \
av_frame_unref(frame); \
ret = AVERROR(ENOMEM); \
goto fail; \
} \
} while (0)
if
(
avctx
->
codec_type
==
AVMEDIA_TYPE_VIDEO
)
{
const
AVPixFmtDescriptor
*
desc
=
av_pix_fmt_desc_get
(
frame
->
format
);
planes
=
av_pix_fmt_count_planes
(
frame
->
format
);
/* workaround for AVHWAccel plane count of 0, buf[0] is used as
check for allocated buffers: make libavcodec happy */
if
(
desc
&&
desc
->
flags
&
AV_PIX_FMT_FLAG_HWACCEL
)
planes
=
1
;
if
(
!
desc
||
planes
<=
0
)
{
ret
=
AVERROR
(
EINVAL
);
goto
fail
;
}
for
(
i
=
0
;
i
<
planes
;
i
++
)
{
int
v_shift
=
(
i
==
1
||
i
==
2
)
?
desc
->
log2_chroma_h
:
0
;
int
plane_size
=
(
frame
->
height
>>
v_shift
)
*
frame
->
linesize
[
i
];
WRAP_PLANE
(
frame
->
buf
[
i
],
frame
->
data
[
i
],
plane_size
);
}
}
else
{
int
planar
=
av_sample_fmt_is_planar
(
frame
->
format
);
planes
=
planar
?
avctx
->
channels
:
1
;
if
(
planes
>
FF_ARRAY_ELEMS
(
frame
->
buf
))
{
frame
->
nb_extended_buf
=
planes
-
FF_ARRAY_ELEMS
(
frame
->
buf
);
frame
->
extended_buf
=
av_malloc
(
sizeof
(
*
frame
->
extended_buf
)
*
frame
->
nb_extended_buf
);
if
(
!
frame
->
extended_buf
)
{
ret
=
AVERROR
(
ENOMEM
);
goto
fail
;
}
}
for
(
i
=
0
;
i
<
FFMIN
(
planes
,
FF_ARRAY_ELEMS
(
frame
->
buf
));
i
++
)
WRAP_PLANE
(
frame
->
buf
[
i
],
frame
->
extended_data
[
i
],
frame
->
linesize
[
0
]);
for
(
i
=
0
;
i
<
frame
->
nb_extended_buf
;
i
++
)
WRAP_PLANE
(
frame
->
extended_buf
[
i
],
frame
->
extended_data
[
i
+
FF_ARRAY_ELEMS
(
frame
->
buf
)],
frame
->
linesize
[
0
]);
}
av_buffer_unref
(
&
dummy_buf
);
frame
->
width
=
avctx
->
width
;
frame
->
height
=
avctx
->
height
;
return
0
;
fail
:
avctx
->
release_buffer
(
avctx
,
frame
);
av_freep
(
&
priv
);
av_buffer_unref
(
&
dummy_buf
);
return
ret
;
}
FF_ENABLE_DEPRECATION_WARNINGS
#endif
ret
=
avctx
->
get_buffer2
(
avctx
,
frame
,
flags
);
end:
...
...
@@ -834,19 +683,6 @@ int ff_reget_buffer(AVCodecContext *avctx, AVFrame *frame)
return
0
;
}
#if FF_API_GET_BUFFER
void
avcodec_default_release_buffer
(
AVCodecContext
*
s
,
AVFrame
*
pic
)
{
av_frame_unref
(
pic
);
}
int
avcodec_default_reget_buffer
(
AVCodecContext
*
s
,
AVFrame
*
pic
)
{
av_assert0
(
0
);
return
AVERROR_BUG
;
}
#endif
int
avcodec_default_execute
(
AVCodecContext
*
c
,
int
(
*
func
)(
AVCodecContext
*
c2
,
void
*
arg2
),
void
*
arg
,
int
*
ret
,
int
count
,
int
size
)
{
int
i
;
...
...
libavcodec/version.h
View file @
9f90b248
...
...
@@ -51,9 +51,6 @@
#ifndef FF_API_DEINTERLACE
#define FF_API_DEINTERLACE (LIBAVCODEC_VERSION_MAJOR < 57)
#endif
#ifndef FF_API_GET_BUFFER
#define FF_API_GET_BUFFER (LIBAVCODEC_VERSION_MAJOR < 57)
#endif
#ifndef FF_API_MISSING_SAMPLE
#define FF_API_MISSING_SAMPLE (LIBAVCODEC_VERSION_MAJOR < 57)
#endif
...
...
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