From 07585ffa62eebebcd35326935fec7cd948021daf Mon Sep 17 00:00:00 2001 From: Luca Barbato Date: Sat, 27 Oct 2012 16:56:37 +0200 Subject: [PATCH 1/8] nutenc: verbosely report unsupported negative pts Additionally use the correct error number. --- libavformat/nutenc.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/libavformat/nutenc.c b/libavformat/nutenc.c index 581a202f11..e9e313bfe1 100644 --- a/libavformat/nutenc.c +++ b/libavformat/nutenc.c @@ -767,8 +767,12 @@ static int nut_write_packet(AVFormatContext *s, AVPacket *pkt) int store_sp = 0; int ret; - if (pkt->pts < 0) - return -1; + if (pkt->pts < 0) { + av_log(s, AV_LOG_ERROR, + "Negative pts not supported stream %d, pts %"PRId64"\n", + pkt->stream_index, pkt->pts); + return AVERROR_INVALIDDATA; + } if (1LL << (20 + 3 * nut->header_count) <= avio_tell(bc)) write_headers(s, bc); From d4bff9f1ab59f4ae58841bd7b056f2ff1b8854d7 Mon Sep 17 00:00:00 2001 From: Luca Barbato Date: Thu, 25 Oct 2012 14:05:40 +0200 Subject: [PATCH 2/8] nut: support textual data Plain text (utf8 encoded) data can be muxed and demuxed in nut. --- doc/nut.texi | 6 ++++++ libavformat/nut.c | 7 ++++++- libavformat/nut.h | 1 + libavformat/nutdec.c | 1 + 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/doc/nut.texi b/doc/nut.texi index 1c23934f6a..9b842416cc 100644 --- a/doc/nut.texi +++ b/doc/nut.texi @@ -66,6 +66,12 @@ PFD[32] would for example be signed 32 bit little-endian IEEE float @item DVBS @tab DVB subtitles @end multitable +@section Raw Data + +@multitable @columnfractions .4 .4 +@item UTF8 @tab Raw UTF-8 +@end multitable + @section Codecs @multitable @columnfractions .4 .4 diff --git a/libavformat/nut.c b/libavformat/nut.c index e367d1c649..85b126b3b1 100644 --- a/libavformat/nut.c +++ b/libavformat/nut.c @@ -33,6 +33,11 @@ const AVCodecTag ff_nut_subtitle_tags[] = { { AV_CODEC_ID_NONE , 0 } }; +const AVCodecTag ff_nut_data_tags[] = { + { AV_CODEC_ID_TEXT , MKTAG('U', 'T', 'F', '8') }, + { AV_CODEC_ID_NONE , 0 } +}; + const AVCodecTag ff_nut_video_tags[] = { { AV_CODEC_ID_RAWVIDEO, MKTAG('R', 'G', 'B', 15 ) }, { AV_CODEC_ID_RAWVIDEO, MKTAG('B', 'G', 'R', 15 ) }, @@ -117,7 +122,7 @@ const AVCodecTag ff_nut_audio_tags[] = { const AVCodecTag * const ff_nut_codec_tags[] = { ff_nut_video_tags, ff_nut_audio_tags, ff_nut_subtitle_tags, - ff_codec_bmp_tags, ff_codec_wav_tags, 0 + ff_codec_bmp_tags, ff_codec_wav_tags, ff_nut_data_tags, 0 }; void ff_nut_reset_ts(NUTContext *nut, AVRational time_base, int64_t val){ diff --git a/libavformat/nut.h b/libavformat/nut.h index a91a109d40..5f624eb22d 100644 --- a/libavformat/nut.h +++ b/libavformat/nut.h @@ -106,6 +106,7 @@ typedef struct NUTContext { extern const AVCodecTag ff_nut_subtitle_tags[]; extern const AVCodecTag ff_nut_video_tags[]; extern const AVCodecTag ff_nut_audio_tags[]; +extern const AVCodecTag ff_nut_data_tags[]; extern const AVCodecTag * const ff_nut_codec_tags[]; diff --git a/libavformat/nutdec.c b/libavformat/nutdec.c index 9b1891f92e..9ce05191a9 100644 --- a/libavformat/nutdec.c +++ b/libavformat/nutdec.c @@ -371,6 +371,7 @@ static int decode_stream_header(NUTContext *nut) break; case 3: st->codec->codec_type = AVMEDIA_TYPE_DATA; + st->codec->codec_id = ff_codec_get_id(ff_nut_data_tags, tmp); break; default: av_log(s, AV_LOG_ERROR, "unknown stream class (%d)\n", class); From f21d5c905dd5c6a56583c85623a376a029ec041a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Storsj=C3=B6?= Date: Mon, 22 Oct 2012 23:13:49 +0300 Subject: [PATCH 3/8] rtsp: Avoid a cast when calling strtol MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This gets rid of this warning: libavformat/rtsp.c: In function ‘rtsp_parse_transport’: libavformat/rtsp.c:794: warning: cast discards qualifiers from pointer target type Signed-off-by: Martin Storsjö --- libavformat/rtsp.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c index bbe08e686e..44de4af192 100644 --- a/libavformat/rtsp.c +++ b/libavformat/rtsp.c @@ -765,8 +765,10 @@ static void rtsp_parse_transport(RTSPMessageHeader *reply, const char *p) th->lower_transport = RTSP_LOWER_TRANSPORT_UDP_MULTICAST; } else if (!strcmp(parameter, "ttl")) { if (*p == '=') { + char *end; p++; - th->ttl = strtol(p, (char **)&p, 10); + th->ttl = strtol(p, &end, 10); + p = end; } } else if (!strcmp(parameter, "destination")) { if (*p == '=') { From 72c758f1fd06e812a2075bae836ec18891d99852 Mon Sep 17 00:00:00 2001 From: Diego Biurrun Date: Wed, 24 Oct 2012 19:16:08 +0200 Subject: [PATCH 4/8] aacenc: Drop some unused function arguments --- libavcodec/aacenc.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/libavcodec/aacenc.c b/libavcodec/aacenc.c index f5ab40f459..e9f6e2ffbf 100644 --- a/libavcodec/aacenc.c +++ b/libavcodec/aacenc.c @@ -302,7 +302,7 @@ static void encode_ms_info(PutBitContext *pb, ChannelElement *cpe) /** * Produce integer coefficients from scalefactors provided by the model. */ -static void adjust_frame_information(AACEncContext *apc, ChannelElement *cpe, int chans) +static void adjust_frame_information(ChannelElement *cpe, int chans) { int i, w, w2, g, ch; int start, maxsfb, cmaxsfb; @@ -460,8 +460,7 @@ static int encode_individual_channel(AVCodecContext *avctx, AACEncContext *s, /** * Write some auxiliary information about the created AAC file. */ -static void put_bitstream_info(AVCodecContext *avctx, AACEncContext *s, - const char *name) +static void put_bitstream_info(AACEncContext *s, const char *name) { int i, namelen, padbits; @@ -584,7 +583,7 @@ static int aac_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, init_put_bits(&s->pb, avpkt->data, avpkt->size); if ((avctx->frame_number & 0xFF)==1 && !(avctx->flags & CODEC_FLAG_BITEXACT)) - put_bitstream_info(avctx, s, LIBAVCODEC_IDENT); + put_bitstream_info(s, LIBAVCODEC_IDENT); start_ch = 0; memset(chan_el_counter, 0, sizeof(chan_el_counter)); for (i = 0; i < s->chan_map[0]; i++) { @@ -626,7 +625,7 @@ static int aac_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, s->coder->search_for_ms(s, cpe, s->lambda); } } - adjust_frame_information(s, cpe, chans); + adjust_frame_information(cpe, chans); if (chans == 2) { put_bits(&s->pb, 1, cpe->common_window); if (cpe->common_window) { From ab799664755c8bc2c439c428ff5b538c105a5c38 Mon Sep 17 00:00:00 2001 From: Diego Biurrun Date: Mon, 29 Oct 2012 18:00:14 +0100 Subject: [PATCH 5/8] cmdutils: Conditionally compile libswscale-related bits This fixes compilation with libswscale disabled. --- cmdutils.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/cmdutils.c b/cmdutils.c index 6570968526..630301ffa2 100644 --- a/cmdutils.c +++ b/cmdutils.c @@ -371,7 +371,10 @@ int opt_default(void *optctx, const char *opt, const char *arg) const AVOption *o; char opt_stripped[128]; const char *p; - const AVClass *cc = avcodec_get_class(), *fc = avformat_get_class(), *sc = sws_get_class(); + const AVClass *cc = avcodec_get_class(), *fc = avformat_get_class(); +#if CONFIG_SWSCALE + const AVClass *sc = sws_get_class(); +#endif if (!(p = strchr(opt, ':'))) p = opt + strlen(opt); @@ -385,6 +388,7 @@ int opt_default(void *optctx, const char *opt, const char *arg) else if ((o = av_opt_find(&fc, opt, NULL, 0, AV_OPT_SEARCH_CHILDREN | AV_OPT_SEARCH_FAKE_OBJ))) av_dict_set(&format_opts, opt, arg, FLAGS); +#if CONFIG_SWSCALE else if ((o = av_opt_find(&sc, opt, NULL, 0, AV_OPT_SEARCH_CHILDREN | AV_OPT_SEARCH_FAKE_OBJ))) { // XXX we only support sws_flags, not arbitrary sws options @@ -394,6 +398,7 @@ int opt_default(void *optctx, const char *opt, const char *arg) return ret; } } +#endif if (o) return 0; From 70478746a94eba6467c02f1c2ae8d8090ad9168e Mon Sep 17 00:00:00 2001 From: Diego Biurrun Date: Wed, 24 Oct 2012 19:18:12 +0200 Subject: [PATCH 6/8] avconv: Drop unused function argument from do_video_stats() --- avconv.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/avconv.c b/avconv.c index 54a0e2a431..d0902a6c9f 100644 --- a/avconv.c +++ b/avconv.c @@ -621,8 +621,7 @@ static double psnr(double d) return -10.0 * log(d) / log(10.0); } -static void do_video_stats(AVFormatContext *os, OutputStream *ost, - int frame_size) +static void do_video_stats(OutputStream *ost, int frame_size) { AVCodecContext *enc; int frame_number; @@ -706,7 +705,7 @@ static int poll_filter(OutputStream *ost) do_video_out(of->ctx, ost, filtered_frame, &frame_size); if (vstats_filename && frame_size) - do_video_stats(of->ctx, ost, frame_size); + do_video_stats(ost, frame_size); break; case AVMEDIA_TYPE_AUDIO: do_audio_out(of->ctx, ost, filtered_frame); From e519990ced06467ea3be249d0267205758a375eb Mon Sep 17 00:00:00 2001 From: Diego Biurrun Date: Wed, 17 Oct 2012 19:47:03 +0200 Subject: [PATCH 7/8] fate: Add shorthands for acodec PCM and ADPCM tests --- tests/fate/acodec.mak | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tests/fate/acodec.mak b/tests/fate/acodec.mak index 609559c804..531f2f3f95 100644 --- a/tests/fate/acodec.mak +++ b/tests/fate/acodec.mak @@ -18,7 +18,9 @@ FATE_ACODEC_PCM-$(call ENCDEC, PCM_F32LE, WAV) += f32le FATE_ACODEC_PCM-$(call ENCDEC, PCM_F64BE, AU) += f64be FATE_ACODEC_PCM-$(call ENCDEC, PCM_F64LE, WAV) += f64le -FATE_ACODEC += $(FATE_ACODEC_PCM-yes:%=fate-acodec-pcm-%) +FATE_ACODEC_PCM := $(FATE_ACODEC_PCM-yes:%=fate-acodec-pcm-%) +FATE_AVCONV += $(FATE_ACODEC_PCM) +fate-acodec-pcm: $(FATE_ACODEC_PCM) fate-acodec-pcm-%: FMT = wav fate-acodec-pcm-%: CODEC = pcm_$(@:fate-acodec-pcm-%=%) @@ -34,7 +36,9 @@ FATE_ACODEC_ADPCM-$(call ENCDEC, ADPCM_MS, WAV) += ms FATE_ACODEC_ADPCM-$(call ENCDEC, ADPCM_SWF, FLV) += swf FATE_ACODEC_ADPCM-$(call ENCDEC, ADPCM_YAMAHA, WAV) += yamaha -FATE_ACODEC += $(FATE_ACODEC_ADPCM-yes:%=fate-acodec-adpcm-%) +FATE_ACODEC_ADPCM := $(FATE_ACODEC_ADPCM-yes:%=fate-acodec-adpcm-%) +FATE_AVCONV += $(FATE_ACODEC_ADPCM) +fate-acodec-adpcm: $(FATE_ACODEC_ADPCM) fate-acodec-adpcm-%: CODEC = adpcm_$(@:fate-acodec-adpcm-%=%) From 381dc1a5ec0925b281c573457c413ae643567086 Mon Sep 17 00:00:00 2001 From: Diego Biurrun Date: Sat, 20 Oct 2012 00:14:26 +0200 Subject: [PATCH 8/8] fate: ac3: Place E-AC-3 tests and AC-3 tests in different groups --- tests/fate/ac3.mak | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/tests/fate/ac3.mak b/tests/fate/ac3.mak index b2bfb8e445..235414d183 100644 --- a/tests/fate/ac3.mak +++ b/tests/fate/ac3.mak @@ -26,23 +26,23 @@ FATE_AC3 += fate-ac3-5.1-downmix-stereo fate-ac3-5.1-downmix-stereo: CMD = pcm -request_channels 2 -i $(SAMPLES)/ac3/monsters_inc_5.1_448_small.ac3 fate-ac3-5.1-downmix-stereo: REF = $(SAMPLES)/ac3/monsters_inc_5.1_448_small_stereo.pcm -FATE_AC3 += fate-eac3-1 +FATE_EAC3 += fate-eac3-1 fate-eac3-1: CMD = pcm -i $(SAMPLES)/eac3/csi_miami_5.1_256_spx_small.eac3 fate-eac3-1: REF = $(SAMPLES)/eac3/csi_miami_5.1_256_spx_small.pcm -FATE_AC3 += fate-eac3-2 +FATE_EAC3 += fate-eac3-2 fate-eac3-2: CMD = pcm -i $(SAMPLES)/eac3/csi_miami_stereo_128_spx_small.eac3 fate-eac3-2: REF = $(SAMPLES)/eac3/csi_miami_stereo_128_spx_small.pcm -FATE_AC3 += fate-eac3-3 +FATE_EAC3 += fate-eac3-3 fate-eac3-3: CMD = pcm -i $(SAMPLES)/eac3/matrix2_commentary1_stereo_192_small.eac3 fate-eac3-3: REF = $(SAMPLES)/eac3/matrix2_commentary1_stereo_192_small.pcm -FATE_AC3 += fate-eac3-4 +FATE_EAC3 += fate-eac3-4 fate-eac3-4: CMD = pcm -i $(SAMPLES)/eac3/serenity_english_5.1_1536_small.eac3 fate-eac3-4: REF = $(SAMPLES)/eac3/serenity_english_5.1_1536_small.pcm -$(FATE_AC3): CMP = oneoff +$(FATE_AC3) $(FATE_EAC3): CMP = oneoff FATE_AC3_ENCODE += fate-ac3-encode fate-ac3-encode: CMD = enc_dec_pcm ac3 wav s16le $(REF) -c:a ac3 -b:a 128k @@ -51,7 +51,7 @@ fate-ac3-encode: CMP_TARGET = 399.62 fate-ac3-encode: SIZE_TOLERANCE = 488 fate-ac3-encode: FUZZ = 3 -FATE_AC3_ENCODE += fate-eac3-encode +FATE_EAC3_ENCODE += fate-eac3-encode fate-eac3-encode: CMD = enc_dec_pcm eac3 wav s16le $(REF) -c:a eac3 -b:a 128k fate-eac3-encode: CMP_SHIFT = -1024 fate-eac3-encode: CMP_TARGET = 514.02 @@ -61,12 +61,15 @@ fate-eac3-encode: FUZZ = 3 fate-ac3-encode fate-eac3-encode: CMP = stddev fate-ac3-encode fate-eac3-encode: REF = $(SAMPLES)/audio-reference/luckynight_2ch_44kHz_s16.wav -FATE_AC3_ENCODE += fate-ac3-fixed-encode +FATE_AC3_FIXED_ENCODE += fate-ac3-fixed-encode fate-ac3-fixed-encode: tests/data/asynth-44100-2.wav fate-ac3-fixed-encode: SRC = $(TARGET_PATH)/tests/data/asynth-44100-2.wav fate-ac3-fixed-encode: CMD = md5 -i $(SRC) -c ac3_fixed -b 128k -f ac3 -flags bitexact fate-ac3-fixed-encode: CMP = oneline fate-ac3-fixed-encode: REF = a1d1fc116463b771abf5aef7ed37d7b1 -FATE_SAMPLES_AVCONV += $(FATE_AC3) $(FATE_AC3_ENCODE) -fate-ac3: $(FATE_AC3) $(FATE_AC3_ENCODE) +FATE_SAMPLES_AVCONV += $(FATE_AC3) $(FATE_AC3_ENCODE) $(FATE_AC3_FIXED_ENCODE) +FATE_SAMPLES_AVCONV += $(FATE_EAC3) $(FATE_EAC3_ENCODE) + +fate-ac3: $(FATE_AC3) $(FATE_AC3_ENCODE) $(FATE_AC3_FIXED_ENCODE) +fate-ac3: $(FATE_EAC3) $(FATE_EAC3_ENCODE)