mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-13 21:28:01 +02:00
Merge remote-tracking branch 'cehoyos/master'
* cehoyos/master: lavc/h264_refs: Fix compilation with -DTRACE. Fix make checkheaders if libmfx is not available. lavf/gif: Add an option max_gif_delay to limit the frame duration. Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
commit
81487781e7
@ -205,6 +205,11 @@ It accepts the following options:
|
||||
Set the minimum valid delay between frames in hundredths of seconds.
|
||||
Range is 0 to 6000. Default value is 2.
|
||||
|
||||
@item max_gif_delay
|
||||
Set the maximum valid delay between frames in hundredth of seconds.
|
||||
Range is 0 to 65535. Default value is 65535 (nearly eleven minutes),
|
||||
the maximum value allowed by the specification.
|
||||
|
||||
@item default_delay
|
||||
Set the default delay between frames in hundredths of seconds.
|
||||
Range is 0 to 6000. Default value is 10.
|
||||
|
@ -869,7 +869,7 @@ SKIPHEADERS += %_tablegen.h \
|
||||
SKIPHEADERS-$(CONFIG_DXVA2) += dxva2.h dxva2_internal.h
|
||||
SKIPHEADERS-$(CONFIG_LIBSCHROEDINGER) += libschroedinger.h
|
||||
SKIPHEADERS-$(CONFIG_LIBUTVIDEO) += libutvideo.h
|
||||
SKIPHEADERS-$(CONFIG_QSVDEC) += qsv.h qsvdec.h qsv_internal.h
|
||||
SKIPHEADERS-$(CONFIG_QSV) += qsv.h qsvdec.h qsvenc.h qsv_internal.h
|
||||
SKIPHEADERS-$(CONFIG_XVMC) += xvmc.h
|
||||
SKIPHEADERS-$(CONFIG_VAAPI) += vaapi_internal.h
|
||||
SKIPHEADERS-$(CONFIG_VDA) += vda.h vda_internal.h
|
||||
|
@ -175,16 +175,16 @@ int ff_h264_fill_default_ref_list(H264Context *h, H264SliceContext *sl)
|
||||
#ifdef TRACE
|
||||
for (i = 0; i < sl->ref_count[0]; i++) {
|
||||
tprintf(h->avctx, "List0: %s fn:%d 0x%p\n",
|
||||
(h->default_ref_list[0][i].long_ref ? "LT" : "ST"),
|
||||
(h->default_ref_list[0][i].parent->long_ref ? "LT" : "ST"),
|
||||
h->default_ref_list[0][i].pic_id,
|
||||
h->default_ref_list[0][i].f.data[0]);
|
||||
h->default_ref_list[0][i].parent->f.data[0]);
|
||||
}
|
||||
if (sl->slice_type_nos == AV_PICTURE_TYPE_B) {
|
||||
for (i = 0; i < sl->ref_count[1]; i++) {
|
||||
tprintf(h->avctx, "List1: %s fn:%d 0x%p\n",
|
||||
(h->default_ref_list[1][i].long_ref ? "LT" : "ST"),
|
||||
(h->default_ref_list[1][i].parent->long_ref ? "LT" : "ST"),
|
||||
h->default_ref_list[1][i].pic_id,
|
||||
h->default_ref_list[1][i].f.data[0]);
|
||||
h->default_ref_list[1][i].parent->f.data[0]);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
@ -43,6 +43,7 @@ typedef struct GIFDemuxContext {
|
||||
* invalid and set to value of default_delay.
|
||||
*/
|
||||
int min_delay;
|
||||
int max_delay;
|
||||
int default_delay;
|
||||
|
||||
/**
|
||||
@ -159,6 +160,7 @@ static int gif_read_ext(AVFormatContext *s)
|
||||
|
||||
if (gdc->delay < gdc->min_delay)
|
||||
gdc->delay = gdc->default_delay;
|
||||
gdc->delay = FFMIN(gdc->delay, gdc->max_delay);
|
||||
|
||||
/* skip the rest of the Graphic Control Extension block */
|
||||
if ((ret = avio_skip(pb, sb_size - 3)) < 0 )
|
||||
@ -309,6 +311,7 @@ resync:
|
||||
|
||||
static const AVOption options[] = {
|
||||
{ "min_delay" , "minimum valid delay between frames (in hundredths of second)", offsetof(GIFDemuxContext, min_delay) , AV_OPT_TYPE_INT, {.i64 = GIF_MIN_DELAY} , 0, 100 * 60, AV_OPT_FLAG_DECODING_PARAM },
|
||||
{ "max_gif_delay", "maximum valid delay between frames (in hundredths of seconds)", offsetof(GIFDemuxContext, max_delay) , AV_OPT_TYPE_INT, {.i64 = 65535} , 0, 65535 , AV_OPT_FLAG_DECODING_PARAM },
|
||||
{ "default_delay", "default delay between frames (in hundredths of second)" , offsetof(GIFDemuxContext, default_delay), AV_OPT_TYPE_INT, {.i64 = GIF_DEFAULT_DELAY}, 0, 100 * 60, AV_OPT_FLAG_DECODING_PARAM },
|
||||
{ "ignore_loop" , "ignore loop setting (netscape extension)" , offsetof(GIFDemuxContext, ignore_loop) , AV_OPT_TYPE_INT, {.i64 = 1} , 0, 1, AV_OPT_FLAG_DECODING_PARAM },
|
||||
{ NULL },
|
||||
|
Loading…
Reference in New Issue
Block a user