From 1fce361d70296cb9f8828f58bf26cd1ce4e8a47a Mon Sep 17 00:00:00 2001 From: Mans Rullgard Date: Sun, 16 Sep 2012 12:58:49 +0100 Subject: [PATCH 01/10] lavfi: replace empty input/output lists with null pointers Signed-off-by: Mans Rullgard --- libavfilter/af_amix.c | 2 +- libavfilter/af_channelsplit.c | 2 +- libavfilter/af_join.c | 2 +- libavfilter/asink_anullsink.c | 2 +- libavfilter/asrc_anullsrc.c | 2 +- libavfilter/avfilter.c | 3 +++ libavfilter/buffersink.c | 4 ++-- libavfilter/buffersrc.c | 4 ++-- libavfilter/split.c | 4 ++-- libavfilter/vf_frei0r.c | 2 +- libavfilter/vsink_nullsink.c | 2 +- libavfilter/vsrc_color.c | 2 +- libavfilter/vsrc_movie.c | 2 +- libavfilter/vsrc_nullsrc.c | 2 +- libavfilter/vsrc_testsrc.c | 4 ++-- 15 files changed, 21 insertions(+), 18 deletions(-) diff --git a/libavfilter/af_amix.c b/libavfilter/af_amix.c index a2eb911b4b..202d67541c 100644 --- a/libavfilter/af_amix.c +++ b/libavfilter/af_amix.c @@ -556,7 +556,7 @@ AVFilter avfilter_af_amix = { .uninit = uninit, .query_formats = query_formats, - .inputs = (const AVFilterPad[]) {{ .name = NULL}}, + .inputs = NULL, .outputs = (const AVFilterPad[]) {{ .name = "default", .type = AVMEDIA_TYPE_AUDIO, .config_props = config_output, diff --git a/libavfilter/af_channelsplit.c b/libavfilter/af_channelsplit.c index 68615aa609..fc044d0f87 100644 --- a/libavfilter/af_channelsplit.c +++ b/libavfilter/af_channelsplit.c @@ -148,5 +148,5 @@ AVFilter avfilter_af_channelsplit = { .type = AVMEDIA_TYPE_AUDIO, .filter_samples = filter_samples, }, { NULL }}, - .outputs = (const AVFilterPad[]){{ NULL }}, + .outputs = NULL, }; diff --git a/libavfilter/af_join.c b/libavfilter/af_join.c index bf939feeaa..26f631de63 100644 --- a/libavfilter/af_join.c +++ b/libavfilter/af_join.c @@ -495,7 +495,7 @@ AVFilter avfilter_af_join = { .uninit = join_uninit, .query_formats = join_query_formats, - .inputs = (const AVFilterPad[]){{ NULL }}, + .inputs = NULL, .outputs = (const AVFilterPad[]){{ .name = "default", .type = AVMEDIA_TYPE_AUDIO, .config_props = join_config_output, diff --git a/libavfilter/asink_anullsink.c b/libavfilter/asink_anullsink.c index cada5c548d..386323f1c0 100644 --- a/libavfilter/asink_anullsink.c +++ b/libavfilter/asink_anullsink.c @@ -39,5 +39,5 @@ AVFilter avfilter_asink_anullsink = { }, { .name = NULL}, }, - .outputs = (const AVFilterPad[]) {{ .name = NULL }}, + .outputs = NULL, }; diff --git a/libavfilter/asrc_anullsrc.c b/libavfilter/asrc_anullsrc.c index 6627c33b3f..62bd3de1e7 100644 --- a/libavfilter/asrc_anullsrc.c +++ b/libavfilter/asrc_anullsrc.c @@ -91,7 +91,7 @@ AVFilter avfilter_asrc_anullsrc = { .init = init, .priv_size = sizeof(ANullContext), - .inputs = (const AVFilterPad[]) {{ .name = NULL}}, + .inputs = NULL, .outputs = (const AVFilterPad[]) {{ .name = "default", .type = AVMEDIA_TYPE_AUDIO, diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c index 77b36339a1..29afc86be7 100644 --- a/libavfilter/avfilter.c +++ b/libavfilter/avfilter.c @@ -302,6 +302,9 @@ static int pad_count(const AVFilterPad *pads) { int count; + if (!pads) + return 0; + for(count = 0; pads->name; count ++) pads ++; return count; } diff --git a/libavfilter/buffersink.c b/libavfilter/buffersink.c index d62b08128a..ca732fc936 100644 --- a/libavfilter/buffersink.c +++ b/libavfilter/buffersink.c @@ -152,7 +152,7 @@ AVFilter avfilter_vsink_buffer = { .min_perms = AV_PERM_READ, .needs_fifo = 1 }, { .name = NULL }}, - .outputs = (const AVFilterPad[]) {{ .name = NULL }}, + .outputs = NULL, }; AVFilter avfilter_asink_abuffer = { @@ -167,5 +167,5 @@ AVFilter avfilter_asink_abuffer = { .min_perms = AV_PERM_READ, .needs_fifo = 1 }, { .name = NULL }}, - .outputs = (const AVFilterPad[]) {{ .name = NULL }}, + .outputs = NULL, }; diff --git a/libavfilter/buffersrc.c b/libavfilter/buffersrc.c index 8e344cbac8..e91d2e470b 100644 --- a/libavfilter/buffersrc.c +++ b/libavfilter/buffersrc.c @@ -364,7 +364,7 @@ AVFilter avfilter_vsrc_buffer = { .init = init_video, .uninit = uninit, - .inputs = (const AVFilterPad[]) {{ .name = NULL }}, + .inputs = NULL, .outputs = (const AVFilterPad[]) {{ .name = "default", .type = AVMEDIA_TYPE_VIDEO, .request_frame = request_frame, @@ -382,7 +382,7 @@ AVFilter avfilter_asrc_abuffer = { .init = init_audio, .uninit = uninit, - .inputs = (const AVFilterPad[]) {{ .name = NULL }}, + .inputs = NULL, .outputs = (const AVFilterPad[]) {{ .name = "default", .type = AVMEDIA_TYPE_AUDIO, .request_frame = request_frame, diff --git a/libavfilter/split.c b/libavfilter/split.c index 88224092d6..e5ff0e56dc 100644 --- a/libavfilter/split.c +++ b/libavfilter/split.c @@ -124,7 +124,7 @@ AVFilter avfilter_vf_split = { .draw_slice = draw_slice, .end_frame = end_frame, }, { .name = NULL}}, - .outputs = (const AVFilterPad[]) {{ .name = NULL}}, + .outputs = NULL, }; static int filter_samples(AVFilterLink *inlink, AVFilterBufferRef *samplesref) @@ -160,5 +160,5 @@ AVFilter avfilter_af_asplit = { .get_audio_buffer = ff_null_get_audio_buffer, .filter_samples = filter_samples }, { .name = NULL }}, - .outputs = (const AVFilterPad[]) {{ .name = NULL }}, + .outputs = NULL, }; diff --git a/libavfilter/vf_frei0r.c b/libavfilter/vf_frei0r.c index 2f4e47c734..f29224e501 100644 --- a/libavfilter/vf_frei0r.c +++ b/libavfilter/vf_frei0r.c @@ -488,7 +488,7 @@ AVFilter avfilter_vsrc_frei0r_src = { .query_formats = query_formats, - .inputs = (const AVFilterPad[]) {{ .name = NULL}}, + .inputs = NULL, .outputs = (const AVFilterPad[]) {{ .name = "default", .type = AVMEDIA_TYPE_VIDEO, diff --git a/libavfilter/vsink_nullsink.c b/libavfilter/vsink_nullsink.c index 27d85a07ec..7373020d84 100644 --- a/libavfilter/vsink_nullsink.c +++ b/libavfilter/vsink_nullsink.c @@ -45,5 +45,5 @@ AVFilter avfilter_vsink_nullsink = { }, { .name = NULL}, }, - .outputs = (const AVFilterPad[]) {{ .name = NULL }}, + .outputs = NULL, }; diff --git a/libavfilter/vsrc_color.c b/libavfilter/vsrc_color.c index d7a26a7f9d..964213fb22 100644 --- a/libavfilter/vsrc_color.c +++ b/libavfilter/vsrc_color.c @@ -192,7 +192,7 @@ AVFilter avfilter_vsrc_color = { .query_formats = query_formats, - .inputs = (const AVFilterPad[]) {{ .name = NULL}}, + .inputs = NULL, .outputs = (const AVFilterPad[]) {{ .name = "default", .type = AVMEDIA_TYPE_VIDEO, diff --git a/libavfilter/vsrc_movie.c b/libavfilter/vsrc_movie.c index 09871febef..aeab10235c 100644 --- a/libavfilter/vsrc_movie.c +++ b/libavfilter/vsrc_movie.c @@ -317,7 +317,7 @@ AVFilter avfilter_vsrc_movie = { .uninit = uninit, .query_formats = query_formats, - .inputs = (const AVFilterPad[]) {{ .name = NULL }}, + .inputs = NULL, .outputs = (const AVFilterPad[]) {{ .name = "default", .type = AVMEDIA_TYPE_VIDEO, .request_frame = request_frame, diff --git a/libavfilter/vsrc_nullsrc.c b/libavfilter/vsrc_nullsrc.c index 888dbcc71a..49200c2cca 100644 --- a/libavfilter/vsrc_nullsrc.c +++ b/libavfilter/vsrc_nullsrc.c @@ -121,7 +121,7 @@ AVFilter avfilter_vsrc_nullsrc = { .init = init, .priv_size = sizeof(NullContext), - .inputs = (const AVFilterPad[]) {{ .name = NULL}}, + .inputs = NULL, .outputs = (const AVFilterPad[]) { { diff --git a/libavfilter/vsrc_testsrc.c b/libavfilter/vsrc_testsrc.c index 709a6a2e3a..bbfd39a7a9 100644 --- a/libavfilter/vsrc_testsrc.c +++ b/libavfilter/vsrc_testsrc.c @@ -367,7 +367,7 @@ AVFilter avfilter_vsrc_testsrc = { .query_formats = test_query_formats, - .inputs = (const AVFilterPad[]) {{ .name = NULL}}, + .inputs = NULL, .outputs = (const AVFilterPad[]) {{ .name = "default", .type = AVMEDIA_TYPE_VIDEO, @@ -494,7 +494,7 @@ AVFilter avfilter_vsrc_rgbtestsrc = { .query_formats = rgbtest_query_formats, - .inputs = (const AVFilterPad[]) {{ .name = NULL}}, + .inputs = NULL, .outputs = (const AVFilterPad[]) {{ .name = "default", .type = AVMEDIA_TYPE_VIDEO, From 4e48aa86563279bf833b3ebcc2eaa1ff97189d91 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Sat, 18 Aug 2012 08:58:09 +0200 Subject: [PATCH 02/10] buffersrc: add const to the AVFrame* argument of av_buffersrc_write_frame() --- libavfilter/buffersrc.c | 2 +- libavfilter/buffersrc.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libavfilter/buffersrc.c b/libavfilter/buffersrc.c index e91d2e470b..ce897f5f5b 100644 --- a/libavfilter/buffersrc.c +++ b/libavfilter/buffersrc.c @@ -70,7 +70,7 @@ typedef struct { return AVERROR(EINVAL);\ } -int av_buffersrc_write_frame(AVFilterContext *buffer_filter, AVFrame *frame) +int av_buffersrc_write_frame(AVFilterContext *buffer_filter, const AVFrame *frame) { BufferSourceContext *c = buffer_filter->priv; AVFilterBufferRef *buf; diff --git a/libavfilter/buffersrc.h b/libavfilter/buffersrc.h index ca82a75df8..452c691b09 100644 --- a/libavfilter/buffersrc.h +++ b/libavfilter/buffersrc.h @@ -45,6 +45,6 @@ int av_buffersrc_buffer(AVFilterContext *s, AVFilterBufferRef *buf); * @warning frame data will be memcpy()ed, which may be a big performance * hit. Use av_buffersrc_buffer() to avoid copying the data. */ -int av_buffersrc_write_frame(AVFilterContext *s, AVFrame *frame); +int av_buffersrc_write_frame(AVFilterContext *s, const AVFrame *frame); #endif /* AVFILTER_BUFFERSRC_H */ From ffdd2e9144f45082ce31f93c20136ade6ed51a54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20B=C5=93sch?= Date: Sat, 12 May 2012 22:31:11 +0200 Subject: [PATCH 03/10] lavf/id3v2: do not export empty fields. This also avoids a memleak. Signed-off-by: Anton Khirnov --- libavformat/id3v2.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libavformat/id3v2.c b/libavformat/id3v2.c index e12e930924..da027800e1 100644 --- a/libavformat/id3v2.c +++ b/libavformat/id3v2.c @@ -293,6 +293,8 @@ static void read_ttag(AVFormatContext *s, AVIOContext *pb, int taglen, const cha } else if (*dst) dict_flags |= AV_DICT_DONT_STRDUP_VAL; + else + av_freep(&dst); if (dst) av_dict_set(&s->metadata, key, dst, dict_flags); From 049ce4facbd0565baeec628083ceacb5035295d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20B=C5=93sch?= Date: Sat, 12 May 2012 22:39:30 +0200 Subject: [PATCH 04/10] id3v2: strdup the genre name explicitly. It would have been done anyway in the av_dict_set() call. This simplifies the code and avoid a warning because of assigning a const string from ff_id3v1_genre_str to a non-const variable. Signed-off-by: Anton Khirnov --- libavformat/id3v2.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/libavformat/id3v2.c b/libavformat/id3v2.c index da027800e1..012d7933a8 100644 --- a/libavformat/id3v2.c +++ b/libavformat/id3v2.c @@ -262,7 +262,7 @@ static int decode_str(AVFormatContext *s, AVIOContext *pb, int encoding, static void read_ttag(AVFormatContext *s, AVIOContext *pb, int taglen, const char *key) { uint8_t *dst; - int encoding, dict_flags = AV_DICT_DONT_OVERWRITE; + int encoding, dict_flags = AV_DICT_DONT_OVERWRITE | AV_DICT_DONT_STRDUP_VAL; unsigned genre; if (taglen < 1) @@ -280,7 +280,7 @@ static void read_ttag(AVFormatContext *s, AVIOContext *pb, int taglen, const cha && (sscanf(dst, "(%d)", &genre) == 1 || sscanf(dst, "%d", &genre) == 1) && genre <= ID3v1_GENRE_MAX) { av_freep(&dst); - dst = ff_id3v1_genre_str[genre]; + dst = av_strdup(ff_id3v1_genre_str[genre]); } else if (!(strcmp(key, "TXXX") && strcmp(key, "TXX"))) { /* dst now contains the key, need to get value */ key = dst; @@ -289,11 +289,8 @@ static void read_ttag(AVFormatContext *s, AVIOContext *pb, int taglen, const cha av_freep(&key); return; } - dict_flags |= AV_DICT_DONT_STRDUP_VAL | AV_DICT_DONT_STRDUP_KEY; - } - else if (*dst) - dict_flags |= AV_DICT_DONT_STRDUP_VAL; - else + dict_flags |= AV_DICT_DONT_STRDUP_KEY; + } else if (!*dst) av_freep(&dst); if (dst) From 58dee6e62d593747b5dbe8ce6c2ff1833151b9b0 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Sat, 18 Aug 2012 16:15:42 +0200 Subject: [PATCH 05/10] avconv: don't pass a bogus parameter to avfilter_graph_create_filter(). The buffer sink does not take any parameters. Fixes an uninitialized variable warning. --- avconv_filter.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/avconv_filter.c b/avconv_filter.c index 4e5c1ecb03..ec38957cc1 100644 --- a/avconv_filter.c +++ b/avconv_filter.c @@ -191,7 +191,7 @@ static int configure_output_video_filter(FilterGraph *fg, OutputFilter *ofilter, snprintf(name, sizeof(name), "output stream %d:%d", ost->file_index, ost->index); ret = avfilter_graph_create_filter(&ofilter->filter, avfilter_get_by_name("buffersink"), - name, NULL, pix_fmts, fg->graph); + name, NULL, NULL, fg->graph); if (ret < 0) return ret; From 9f64c8219ada4bd48927abaa5eebd7ff9ba95f61 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Sat, 18 Aug 2012 16:21:00 +0200 Subject: [PATCH 06/10] lavc: add const to private codec class initialization. Silences a warning about discarding const. --- libavcodec/utils.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/utils.c b/libavcodec/utils.c index b5b0466650..23ac50038f 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -681,7 +681,7 @@ int attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *code goto end; } if (codec->priv_class) { - *(AVClass**)avctx->priv_data= codec->priv_class; + *(const AVClass**)avctx->priv_data = codec->priv_class; av_opt_set_defaults(avctx->priv_data); } } From 466b39efaf09adecc7314eaba5904b0ee8442528 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Sat, 18 Aug 2012 16:41:24 +0200 Subject: [PATCH 07/10] lavc: replace AVCodecContext.encode with subtitle-specific callback AVCodecContext.encode is currently used only for subtitles, encode2 is used for audio and video. --- libavcodec/assenc.c | 6 +++--- libavcodec/avcodec.h | 5 ++++- libavcodec/dvbsub.c | 8 ++++---- libavcodec/dvdsubenc.c | 6 +++--- libavcodec/utils.c | 4 ++-- libavcodec/xsubenc.c | 5 ++--- 6 files changed, 18 insertions(+), 16 deletions(-) diff --git a/libavcodec/assenc.c b/libavcodec/assenc.c index 6b4462349c..caf266e037 100644 --- a/libavcodec/assenc.c +++ b/libavcodec/assenc.c @@ -37,9 +37,9 @@ static av_cold int ass_encode_init(AVCodecContext *avctx) } static int ass_encode_frame(AVCodecContext *avctx, - unsigned char *buf, int bufsize, void *data) + unsigned char *buf, int bufsize, + const AVSubtitle *sub) { - AVSubtitle *sub = data; int i, len, total_len = 0; for (i=0; inum_rects; i++) { @@ -67,5 +67,5 @@ AVCodec ff_ass_encoder = { .type = AVMEDIA_TYPE_SUBTITLE, .id = AV_CODEC_ID_SSA, .init = ass_encode_init, - .encode = ass_encode_frame, + .encode_sub = ass_encode_frame, }; diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index d0c5e07d10..c5cdf41ed3 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -2901,6 +2901,8 @@ typedef struct AVProfile { typedef struct AVCodecDefault AVCodecDefault; +struct AVSubtitle; + /** * AVCodec. */ @@ -2973,7 +2975,8 @@ typedef struct AVCodec { void (*init_static_data)(struct AVCodec *codec); int (*init)(AVCodecContext *); - int (*encode)(AVCodecContext *, uint8_t *buf, int buf_size, void *data); + int (*encode_sub)(AVCodecContext *, uint8_t *buf, int buf_size, + const struct AVSubtitle *sub); /** * Encode data to an AVPacket. * diff --git a/libavcodec/dvbsub.c b/libavcodec/dvbsub.c index 51317f0a87..26d14bd363 100644 --- a/libavcodec/dvbsub.c +++ b/libavcodec/dvbsub.c @@ -195,7 +195,7 @@ static void dvb_encode_rle4(uint8_t **pq, } static int encode_dvb_subtitles(DVBSubtitleContext *s, - uint8_t *outbuf, AVSubtitle *h) + uint8_t *outbuf, const AVSubtitle *h) { uint8_t *q, *pseg_len; int page_id, region_id, clut_id, object_id, i, bpp_index, page_state; @@ -392,10 +392,10 @@ static int encode_dvb_subtitles(DVBSubtitleContext *s, } static int dvbsub_encode(AVCodecContext *avctx, - unsigned char *buf, int buf_size, void *data) + unsigned char *buf, int buf_size, + const AVSubtitle *sub) { DVBSubtitleContext *s = avctx->priv_data; - AVSubtitle *sub = data; int ret; ret = encode_dvb_subtitles(s, buf, sub); @@ -407,6 +407,6 @@ AVCodec ff_dvbsub_encoder = { .type = AVMEDIA_TYPE_SUBTITLE, .id = AV_CODEC_ID_DVB_SUBTITLE, .priv_data_size = sizeof(DVBSubtitleContext), - .encode = dvbsub_encode, + .encode_sub = dvbsub_encode, .long_name = NULL_IF_CONFIG_SMALL("DVB subtitles"), }; diff --git a/libavcodec/dvdsubenc.c b/libavcodec/dvdsubenc.c index c41a98394d..5e362b7f64 100644 --- a/libavcodec/dvdsubenc.c +++ b/libavcodec/dvdsubenc.c @@ -205,10 +205,10 @@ static int encode_dvd_subtitles(uint8_t *outbuf, int outbuf_size, } static int dvdsub_encode(AVCodecContext *avctx, - unsigned char *buf, int buf_size, void *data) + unsigned char *buf, int buf_size, + const AVSubtitle *sub) { //DVDSubtitleContext *s = avctx->priv_data; - AVSubtitle *sub = data; int ret; ret = encode_dvd_subtitles(buf, buf_size, sub); @@ -219,6 +219,6 @@ AVCodec ff_dvdsub_encoder = { .name = "dvdsub", .type = AVMEDIA_TYPE_SUBTITLE, .id = AV_CODEC_ID_DVD_SUBTITLE, - .encode = dvdsub_encode, + .encode_sub = dvdsub_encode, .long_name = NULL_IF_CONFIG_SMALL("DVD subtitles"), }; diff --git a/libavcodec/utils.c b/libavcodec/utils.c index 23ac50038f..f56dd7b793 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -115,7 +115,7 @@ static void avcodec_init(void) int av_codec_is_encoder(const AVCodec *codec) { - return codec && (codec->encode || codec->encode2); + return codec && (codec->encode_sub || codec->encode2); } int av_codec_is_decoder(const AVCodec *codec) @@ -1174,7 +1174,7 @@ int avcodec_encode_subtitle(AVCodecContext *avctx, uint8_t *buf, int buf_size, } if(sub->num_rects == 0 || !sub->rects) return -1; - ret = avctx->codec->encode(avctx, buf, buf_size, sub); + ret = avctx->codec->encode_sub(avctx, buf, buf_size, sub); avctx->frame_number++; return ret; } diff --git a/libavcodec/xsubenc.c b/libavcodec/xsubenc.c index ff3b495a03..6f359a1d6e 100644 --- a/libavcodec/xsubenc.c +++ b/libavcodec/xsubenc.c @@ -111,9 +111,8 @@ static int make_tc(uint64_t ms, int *tc) } static int xsub_encode(AVCodecContext *avctx, unsigned char *buf, - int bufsize, void *data) + int bufsize, const AVSubtitle *h) { - AVSubtitle *h = data; uint64_t startTime = h->pts / 1000; // FIXME: need better solution... uint64_t endTime = startTime + h->end_display_time - h->start_display_time; int start_tc[4], end_tc[4]; @@ -215,6 +214,6 @@ AVCodec ff_xsub_encoder = { .type = AVMEDIA_TYPE_SUBTITLE, .id = AV_CODEC_ID_XSUB, .init = xsub_encoder_init, - .encode = xsub_encode, + .encode_sub= xsub_encode, .long_name = NULL_IF_CONFIG_SMALL("DivX subtitles (XSUB)"), }; From 34ebbbfeecd6f535c75dfddf2d21d198e1613300 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Sat, 18 Aug 2012 16:42:50 +0200 Subject: [PATCH 08/10] xsubenc: reindent --- libavcodec/xsubenc.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/libavcodec/xsubenc.c b/libavcodec/xsubenc.c index 6f359a1d6e..816e651a67 100644 --- a/libavcodec/xsubenc.c +++ b/libavcodec/xsubenc.c @@ -210,10 +210,10 @@ static av_cold int xsub_encoder_init(AVCodecContext *avctx) } AVCodec ff_xsub_encoder = { - .name = "xsub", - .type = AVMEDIA_TYPE_SUBTITLE, - .id = AV_CODEC_ID_XSUB, - .init = xsub_encoder_init, - .encode_sub= xsub_encode, - .long_name = NULL_IF_CONFIG_SMALL("DivX subtitles (XSUB)"), + .name = "xsub", + .type = AVMEDIA_TYPE_SUBTITLE, + .id = AV_CODEC_ID_XSUB, + .init = xsub_encoder_init, + .encode_sub = xsub_encode, + .long_name = NULL_IF_CONFIG_SMALL("DivX subtitles (XSUB)"), }; From e3496e5dbe277e056800ebe7740ac6467d35d5cb Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Sat, 18 Aug 2012 16:51:32 +0200 Subject: [PATCH 09/10] avfiltergraph: silence an uninitialized variable warning MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The warning is: libavfilter/avfiltergraph.c: In function ‘avfilter_graph_config’: libavfilter/avfiltergraph.c:528:9: warning: ‘best_idx’ may be used uninitialized in this function [-Wuninitialized] libavfilter/avfiltergraph.c:479:13: note: ‘best_idx’ was declared here Initialize it to an invalid value and add an assert that it's properly set later. --- libavfilter/avfiltergraph.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libavfilter/avfiltergraph.c b/libavfilter/avfiltergraph.c index 525a1dc6c7..4a66c7842a 100644 --- a/libavfilter/avfiltergraph.c +++ b/libavfilter/avfiltergraph.c @@ -476,7 +476,7 @@ static void swap_channel_layouts_on_filter(AVFilterContext *filter) for (i = 0; i < filter->nb_outputs; i++) { AVFilterLink *outlink = filter->outputs[i]; - int best_idx, best_score = INT_MIN, best_count_diff = INT_MAX; + int best_idx = -1, best_score = INT_MIN, best_count_diff = INT_MAX; if (outlink->type != AVMEDIA_TYPE_AUDIO || outlink->in_channel_layouts->nb_channel_layouts < 2) @@ -525,6 +525,7 @@ static void swap_channel_layouts_on_filter(AVFilterContext *filter) best_count_diff = count_diff; } } + av_assert0(best_idx >= 0); FFSWAP(uint64_t, outlink->in_channel_layouts->channel_layouts[0], outlink->in_channel_layouts->channel_layouts[best_idx]); } From 23aae62c2cb4504a09ceb8cd0cabc1c8b260f521 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Sat, 7 Apr 2012 17:25:47 +0200 Subject: [PATCH 10/10] alsdec: Check k used for rice decoder. Values that fail this check will cause failure of decode_rice() Signed-off-by: Michael Niedermayer Signed-off-by: Justin Ruggles --- libavcodec/alsdec.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libavcodec/alsdec.c b/libavcodec/alsdec.c index 56d7f2faca..ef12253271 100644 --- a/libavcodec/alsdec.c +++ b/libavcodec/alsdec.c @@ -651,6 +651,11 @@ static int read_var_block_data(ALSDecContext *ctx, ALSBlockData *bd) for (k = 1; k < sub_blocks; k++) s[k] = s[k - 1] + decode_rice(gb, 0); } + for (k = 1; k < sub_blocks; k++) + if (s[k] > 32) { + av_log(avctx, AV_LOG_ERROR, "k invalid for rice code.\n"); + return AVERROR_INVALIDDATA; + } if (get_bits1(gb)) *bd->shift_lsbs = get_bits(gb, 4) + 1;