From 5aa3fcec3509da8fb202fb5fa4d0a560326c41c0 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Mon, 12 Sep 2011 20:40:29 +0200 Subject: [PATCH 1/7] doc/avconv: document -timelimit. --- doc/avconv.texi | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/avconv.texi b/doc/avconv.texi index dc6701e8ea..2cfed01b13 100644 --- a/doc/avconv.texi +++ b/doc/avconv.texi @@ -647,6 +647,8 @@ Show benchmarking information at the end of an encode. Shows CPU time used and maximum memory consumption. Maximum memory consumption is not supported on all systems, it will usually display as 0 if not supported. +@item -timelimit @var{duration} (@emph{global}) +Exit after avconv has been running for @var{duration} seconds. @item -dump (@emph{global}) Dump each input packet. @item -hex (@emph{global}) From d159060a87355833723389b357f8489cca022919 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Mon, 12 Sep 2011 21:03:52 +0200 Subject: [PATCH 2/7] doc/avconv: expand documentation for some options. --- doc/avconv.texi | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/doc/avconv.texi b/doc/avconv.texi index 2cfed01b13..d585db8105 100644 --- a/doc/avconv.texi +++ b/doc/avconv.texi @@ -82,13 +82,15 @@ described. @table @option @item -f @var{fmt} (@emph{input/output}) -Force format. +Force input or output file format. The format is normally autodetected for input +files and guessed from file extension for output files, so this option is not +needed in most cases. @item -i @var{filename} (@emph{input}) input file name @item -y (@emph{global}) -Overwrite output files. +Overwrite output files without asking. @item -c[:@var{stream_specifier}] @var{codec} (@emph{input/output,per-stream}) @itemx -codec[:@var{stream_specifier}] @var{codec} (@emph{input/output,per-stream}) @@ -111,9 +113,8 @@ will copy all the streams except the second video, which will be encoded with libx264, and the 138th audio, which will be encoded with libvorbis. @item -t @var{duration} (@emph{output}) -Restrict the transcoded/captured video sequence -to the duration specified in seconds. -@code{hh:mm:ss[.xxx]} syntax is also supported. +Stop writing the output after its duration reaches @var{duration}. +@var{duration} may be a number in seconds, or in @code{hh:mm:ss[.xxx]} form. @item -fs @var{limit_size} (@emph{output}) Set the file size limit. @@ -131,7 +132,7 @@ Set the input time offset in seconds. @code{[-]hh:mm:ss[.xxx]} syntax is also supported. The offset is added to the timestamps of the input files. Specifying a positive offset means that the corresponding -streams are delayed by 'offset' seconds. +streams are delayed by @var{offset} seconds. @item -metadata[:metadata_specifier] @var{key}=@var{value} (@emph{output,per-metadata}) Set a metadata key/value pair. @@ -158,9 +159,10 @@ This option is deprecated and has no effect, use -loglevel to set verbosity level. @item -target @var{type} (@emph{output}) -Specify target file type ("vcd", "svcd", "dvd", "dv", "dv50", "pal-vcd", -"ntsc-svcd", ... ). All the format options (bitrate, codecs, -buffer sizes) are then set automatically. You can just type: +Specify target file type (@code{vcd}, @code{svcd}, @code{dvd}, @code{dv}, +@code{dv50}). @var{type} may be prefixed with @code{pal-}, @code{ntsc-} or +@code{film-} to use the corresponding standard. All the format options +(bitrate, codecs, buffer sizes) are then set automatically. You can just type: @example avconv -i myfile.avi -target vcd /tmp/vcd.mpg @@ -650,7 +652,7 @@ it will usually display as 0 if not supported. @item -timelimit @var{duration} (@emph{global}) Exit after avconv has been running for @var{duration} seconds. @item -dump (@emph{global}) -Dump each input packet. +Dump each input packet to stderr. @item -hex (@emph{global}) When dumping packets, also dump the payload. @item -ps @var{size} From becdce99eb59a47d6b4b26c60f5e18e86fdfab5f Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Tue, 27 Sep 2011 07:42:29 +0200 Subject: [PATCH 3/7] avconv: factorize common code from new_*_stream() --- avconv.c | 20 +++----------------- 1 file changed, 3 insertions(+), 17 deletions(-) diff --git a/avconv.c b/avconv.c index c7a5c71b02..4d789e0ca2 100644 --- a/avconv.c +++ b/avconv.c @@ -2976,6 +2976,9 @@ static OutputStream *new_output_stream(OptionsContext *o, AVFormatContext *oc, e st->codec->global_quality = FF_QP2LAMBDA * qscale; } + if (oc->oformat->flags & AVFMT_GLOBALHEADER) + st->codec->flags |= CODEC_FLAG_GLOBAL_HEADER; + ost->sws_flags = av_get_int(sws_opts, "sws_flags", NULL); return ost; } @@ -3007,10 +3010,6 @@ static OutputStream *new_video_stream(OptionsContext *o, AVFormatContext *oc) st = ost->st; video_enc = st->codec; - if(oc->oformat->flags & AVFMT_GLOBALHEADER) { - video_enc->flags |= CODEC_FLAG_GLOBAL_HEADER; - } - if (!st->stream_copy) { const char *p = NULL; char *forced_key_frames = NULL, *frame_rate = NULL, *frame_size = NULL; @@ -3128,9 +3127,6 @@ static OutputStream *new_audio_stream(OptionsContext *o, AVFormatContext *oc) audio_enc = st->codec; audio_enc->codec_type = AVMEDIA_TYPE_AUDIO; - if (oc->oformat->flags & AVFMT_GLOBALHEADER) { - audio_enc->flags |= CODEC_FLAG_GLOBAL_HEADER; - } if (!st->stream_copy) { char *sample_fmt = NULL; @@ -3153,20 +3149,14 @@ static OutputStream *new_data_stream(OptionsContext *o, AVFormatContext *oc) { AVStream *st; OutputStream *ost; - AVCodecContext *data_enc; ost = new_output_stream(o, oc, AVMEDIA_TYPE_DATA); st = ost->st; - data_enc = st->codec; if (!st->stream_copy) { av_log(NULL, AV_LOG_FATAL, "Data stream encoding not supported yet (only streamcopy)\n"); exit_program(1); } - if (oc->oformat->flags & AVFMT_GLOBALHEADER) { - data_enc->flags |= CODEC_FLAG_GLOBAL_HEADER; - } - return ost; } @@ -3182,10 +3172,6 @@ static OutputStream *new_subtitle_stream(OptionsContext *o, AVFormatContext *oc) subtitle_enc->codec_type = AVMEDIA_TYPE_SUBTITLE; - if (oc->oformat->flags & AVFMT_GLOBALHEADER) { - subtitle_enc->flags |= CODEC_FLAG_GLOBAL_HEADER; - } - return ost; } From 98cfe22b5cfba65d9710c1822ad67855bca886d5 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Tue, 27 Sep 2011 10:36:53 +0200 Subject: [PATCH 4/7] matroskadec: export mimetype of attachments as metadata. --- libavformat/matroskadec.c | 1 + 1 file changed, 1 insertion(+) diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index 01c9a7b3ce..af5532bde3 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -1555,6 +1555,7 @@ static int matroska_read_header(AVFormatContext *s, AVFormatParameters *ap) if (st == NULL) break; av_dict_set(&st->metadata, "filename",attachements[j].filename, 0); + av_dict_set(&st->metadata, "mimetype", attachements[j].mime, 0); st->codec->codec_id = CODEC_ID_NONE; st->codec->codec_type = AVMEDIA_TYPE_ATTACHMENT; st->codec->extradata = av_malloc(attachements[j].bin.size); From c7a63a521b5c165405e3577751d649529d09f0c5 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Sat, 30 Jul 2011 13:37:36 +0200 Subject: [PATCH 5/7] matroskaenc: write attachments. --- libavformat/matroskaenc.c | 72 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index ce1a7d1d3f..02d10afc72 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -91,6 +91,8 @@ typedef struct MatroskaMuxContext { unsigned int audio_buffer_size; AVPacket cur_audio_pkt; + + int have_attachments; } MatroskaMuxContext; @@ -528,6 +530,11 @@ static int mkv_write_tracks(AVFormatContext *s) int output_sample_rate = 0; AVDictionaryEntry *tag; + if (codec->codec_type == AVMEDIA_TYPE_ATTACHMENT) { + mkv->have_attachments = 1; + continue; + } + if (!bit_depth) bit_depth = av_get_bytes_per_sample(codec->sample_fmt) << 3; @@ -797,6 +804,68 @@ static int mkv_write_tags(AVFormatContext *s) return 0; } +static int mkv_write_attachments(AVFormatContext *s) +{ + MatroskaMuxContext *mkv = s->priv_data; + AVIOContext *pb = s->pb; + ebml_master attachments; + AVLFG c; + int i, ret; + + if (!mkv->have_attachments) + return 0; + + av_lfg_init(&c, av_get_random_seed()); + + ret = mkv_add_seekhead_entry(mkv->main_seekhead, MATROSKA_ID_ATTACHMENTS, avio_tell(pb)); + if (ret < 0) return ret; + + attachments = start_ebml_master(pb, MATROSKA_ID_ATTACHMENTS, 0); + + for (i = 0; i < s->nb_streams; i++) { + AVStream *st = s->streams[i]; + ebml_master attached_file; + AVDictionaryEntry *t; + const char *mimetype = NULL; + + if (st->codec->codec_type != AVMEDIA_TYPE_ATTACHMENT) + continue; + + attached_file = start_ebml_master(pb, MATROSKA_ID_ATTACHEDFILE, 0); + + if (t = av_dict_get(st->metadata, "title", NULL, 0)) + put_ebml_string(pb, MATROSKA_ID_FILEDESC, t->value); + if (!(t = av_dict_get(st->metadata, "filename", NULL, 0))) { + av_log(s, AV_LOG_ERROR, "Attachment stream %d has no filename tag.\n", i); + return AVERROR(EINVAL); + } + put_ebml_string(pb, MATROSKA_ID_FILENAME, t->value); + if (t = av_dict_get(st->metadata, "mimetype", NULL, 0)) + mimetype = t->value; + else if (st->codec->codec_id != CODEC_ID_NONE ) { + int i; + for (i = 0; ff_mkv_mime_tags[i].id != CODEC_ID_NONE; i++) + if (ff_mkv_mime_tags[i].id == st->codec->codec_id) { + mimetype = ff_mkv_mime_tags[i].str; + break; + } + } + if (!mimetype) { + av_log(s, AV_LOG_ERROR, "Attachment stream %d has no mimetype tag and " + "it cannot be deduced from the codec id.\n", i); + return AVERROR(EINVAL); + } + + put_ebml_string(pb, MATROSKA_ID_FILEMIMETYPE, mimetype); + put_ebml_binary(pb, MATROSKA_ID_FILEDATA, st->codec->extradata, st->codec->extradata_size); + put_ebml_uint(pb, MATROSKA_ID_FILEUID, av_lfg_get(&c)); + end_ebml_master(pb, attached_file); + } + end_ebml_master(pb, attachments); + + return 0; +} + static int mkv_write_header(AVFormatContext *s) { MatroskaMuxContext *mkv = s->priv_data; @@ -870,6 +939,9 @@ static int mkv_write_header(AVFormatContext *s) ret = mkv_write_tags(s); if (ret < 0) return ret; + + ret = mkv_write_attachments(s); + if (ret < 0) return ret; } if (!s->pb->seekable) From 3ccd15803bc1dd06cf2646ade92891dada5417ea Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Tue, 27 Sep 2011 10:37:22 +0200 Subject: [PATCH 6/7] avconv: add support for copying attachments. --- avconv.c | 9 +++++++++ cmdutils.c | 3 ++- doc/avtools-common-opts.texi | 7 ++++--- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/avconv.c b/avconv.c index 4d789e0ca2..9d2ad51740 100644 --- a/avconv.c +++ b/avconv.c @@ -1991,6 +1991,7 @@ static int transcode_init(OutputFile *output_files, codec->height = icodec->height; break; case AVMEDIA_TYPE_DATA: + case AVMEDIA_TYPE_ATTACHMENT: break; default: abort(); @@ -3160,6 +3161,13 @@ static OutputStream *new_data_stream(OptionsContext *o, AVFormatContext *oc) return ost; } +static OutputStream *new_attachment_stream(OptionsContext *o, AVFormatContext *oc) +{ + OutputStream *ost = new_output_stream(o, oc, AVMEDIA_TYPE_ATTACHMENT); + ost->st->stream_copy = 1; + return ost; +} + static OutputStream *new_subtitle_stream(OptionsContext *o, AVFormatContext *oc) { AVStream *st; @@ -3375,6 +3383,7 @@ static void opt_output_file(void *optctx, const char *filename) case AVMEDIA_TYPE_AUDIO: ost = new_audio_stream(o, oc); break; case AVMEDIA_TYPE_SUBTITLE: ost = new_subtitle_stream(o, oc); break; case AVMEDIA_TYPE_DATA: ost = new_data_stream(o, oc); break; + case AVMEDIA_TYPE_ATTACHMENT: ost = new_attachment_stream(o, oc); break; default: av_log(NULL, AV_LOG_FATAL, "Cannot map stream #%d.%d - unsupported type.\n", map->file_index, map->stream_index); diff --git a/cmdutils.c b/cmdutils.c index 1e873e66a1..2c37880d74 100644 --- a/cmdutils.c +++ b/cmdutils.c @@ -858,7 +858,7 @@ int check_stream_specifier(AVFormatContext *s, AVStream *st, const char *spec) { if (*spec <= '9' && *spec >= '0') /* opt:index */ return strtol(spec, NULL, 0) == st->index; - else if (*spec == 'v' || *spec == 'a' || *spec == 's' || *spec == 'd') { /* opt:[vasd] */ + else if (*spec == 'v' || *spec == 'a' || *spec == 's' || *spec == 'd' || *spec == 't') { /* opt:[vasdt] */ enum AVMediaType type; switch (*spec++) { @@ -866,6 +866,7 @@ int check_stream_specifier(AVFormatContext *s, AVStream *st, const char *spec) case 'a': type = AVMEDIA_TYPE_AUDIO; break; case 's': type = AVMEDIA_TYPE_SUBTITLE; break; case 'd': type = AVMEDIA_TYPE_DATA; break; + case 't': type = AVMEDIA_TYPE_ATTACHMENT; break; } if (type != st->codec->codec_type) return 0; diff --git a/doc/avtools-common-opts.texi b/doc/avtools-common-opts.texi index 0f0ecdf943..634b152ccc 100644 --- a/doc/avtools-common-opts.texi +++ b/doc/avtools-common-opts.texi @@ -33,9 +33,10 @@ Possible forms of stream specifiers are: Matches the stream with this index. E.g. @code{-threads:1 4} would set the thread count for the second stream to 4. @item @var{stream_type}[:@var{stream_index}] -@var{stream_type} is one of: 'v' for video, 'a' for audio, 's' for subtitle and -'d' for data. If @var{stream_index} is given, then matches stream number -@var{stream_index} of this type. Otherwise matches all streams of this type. +@var{stream_type} is one of: 'v' for video, 'a' for audio, 's' for subtitle, +'d' for data and 't' for attachments. If @var{stream_index} is given, then +matches stream number @var{stream_index} of this type. Otherwise matches all +streams of this type. @item @var{program_id}[:@var{stream_index}] If @var{stream_index} is given, then matches stream number @var{stream_index} in program with id @var{program_id}. Otherwise matches all streams in this program. From d3c1d37a9019ed32a1710d53c1ad08c44bd072da Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Fri, 23 Sep 2011 16:17:42 +0200 Subject: [PATCH 7/7] avconv: use different variables for decoded and filtered frame. Makes the code less obfuscated and fixes encoding one video stream to several outputs. Also use avcodec_alloc_frame() instead of allocating AVFrame on stack. Breaks me_threshold in avconv, as motion vectors aren't passed through lavfi. They could be copied manually, but I don't think this misfeature is useful enough to justify ugly hacks. --- avconv.c | 36 ++++++++++++++++++++++++----------- tests/codec-regression.sh | 5 ----- tests/ref/vsynth1/mpeg2thread | 4 ---- tests/ref/vsynth2/mpeg2thread | 4 ---- 4 files changed, 25 insertions(+), 24 deletions(-) diff --git a/avconv.c b/avconv.c index 9d2ad51740..ed5d7092fe 100644 --- a/avconv.c +++ b/avconv.c @@ -1520,7 +1520,6 @@ static int output_packet(InputStream *ist, int ist_index, OutputStream *ost; int ret, i; int got_output; - AVFrame picture; void *buffer_to_free = NULL; static unsigned int samples_size= 0; AVSubtitle subtitle, *subtitle_to_free; @@ -1555,6 +1554,7 @@ static int output_packet(InputStream *ist, int ist_index, while (avpkt.size > 0 || (!pkt && got_output)) { uint8_t *data_buf, *decoded_data_buf; int data_size, decoded_data_size; + AVFrame *decoded_frame, *filtered_frame; handle_eof: ist->pts= ist->next_pts; @@ -1564,6 +1564,7 @@ static int output_packet(InputStream *ist, int ist_index, ist->showed_multi_packet_warning=1; /* decode the packet if needed */ + decoded_frame = filtered_frame = NULL; decoded_data_buf = NULL; /* fail safe */ decoded_data_size= 0; data_buf = avpkt.data; @@ -1600,22 +1601,24 @@ static int output_packet(InputStream *ist, int ist_index, break;} case AVMEDIA_TYPE_VIDEO: decoded_data_size = (ist->st->codec->width * ist->st->codec->height * 3) / 2; - /* XXX: allocate picture correctly */ - avcodec_get_frame_defaults(&picture); + if (!(decoded_frame = avcodec_alloc_frame())) + return AVERROR(ENOMEM); avpkt.pts = pkt_pts; avpkt.dts = ist->pts; pkt_pts = AV_NOPTS_VALUE; ret = avcodec_decode_video2(ist->st->codec, - &picture, &got_output, &avpkt); - quality = same_quant ? picture.quality : 0; + decoded_frame, &got_output, &avpkt); + quality = same_quant ? decoded_frame->quality : 0; if (ret < 0) - return ret; + goto fail; if (!got_output) { /* no picture yet */ + av_freep(&decoded_frame); goto discard_packet; } - ist->next_pts = ist->pts = guess_correct_pts(&ist->pts_ctx, picture.pkt_pts, picture.pkt_dts); + ist->next_pts = ist->pts = guess_correct_pts(&ist->pts_ctx, decoded_frame->pkt_pts, + decoded_frame->pkt_dts); if (ist->st->codec->time_base.num != 0) { int ticks= ist->st->parser ? ist->st->parser->repeat_pict+1 : ist->st->codec->ticks_per_frame; ist->next_pts += ((int64_t)AV_TIME_BASE * @@ -1624,7 +1627,7 @@ static int output_packet(InputStream *ist, int ist_index, } avpkt.size = 0; buffer_to_free = NULL; - pre_process_video_frame(ist, (AVPicture *)&picture, &buffer_to_free); + pre_process_video_frame(ist, (AVPicture *)decoded_frame, &buffer_to_free); break; case AVMEDIA_TYPE_SUBTITLE: ret = avcodec_decode_subtitle2(ist->st->codec, @@ -1705,16 +1708,22 @@ static int output_packet(InputStream *ist, int ist_index, sar = ist->st->sample_aspect_ratio; else sar = ist->st->codec->sample_aspect_ratio; - av_vsrc_buffer_add_frame(ost->input_video_filter, &picture, ist->pts, sar); + av_vsrc_buffer_add_frame(ost->input_video_filter, decoded_frame, ist->pts, sar); + if (!(filtered_frame = avcodec_alloc_frame())) { + ret = AVERROR(ENOMEM); + goto fail; + } } frame_available = ist->st->codec->codec_type != AVMEDIA_TYPE_VIDEO || !ost->output_video_filter || avfilter_poll_frame(ost->output_video_filter->inputs[0]); while (frame_available) { AVRational ist_pts_tb; if (ist->st->codec->codec_type == AVMEDIA_TYPE_VIDEO && ost->output_video_filter) - get_filtered_video_frame(ost->output_video_filter, &picture, &ost->picref, &ist_pts_tb); + get_filtered_video_frame(ost->output_video_filter, filtered_frame, &ost->picref, &ist_pts_tb); if (ost->picref) ist->pts = av_rescale_q(ost->picref->pts, ist_pts_tb, AV_TIME_BASE_Q); +#else + filtered_frame = decoded_frame; #endif os = output_files[ost->file_index].ctx; @@ -1732,7 +1741,7 @@ static int output_packet(InputStream *ist, int ist_index, if (ost->picref->video && !ost->frame_aspect_ratio) ost->st->codec->sample_aspect_ratio = ost->picref->video->pixel_aspect; #endif - do_video_out(os, ost, ist, &picture, &frame_size, + do_video_out(os, ost, ist, filtered_frame, &frame_size, same_quant ? quality : ost->st->codec->global_quality); if (vstats_filename && frame_size) do_video_stats(os, ost, frame_size); @@ -1806,15 +1815,20 @@ static int output_packet(InputStream *ist, int ist_index, if (ost->picref) avfilter_unref_buffer(ost->picref); } + av_freep(&filtered_frame); #endif } +fail: av_free(buffer_to_free); /* XXX: allocate the subtitles in the codec ? */ if (subtitle_to_free) { avsubtitle_free(subtitle_to_free); subtitle_to_free = NULL; } + av_freep(&decoded_frame); + if (ret < 0) + return ret; } discard_packet: diff --git a/tests/codec-regression.sh b/tests/codec-regression.sh index 164550bcc3..cafa84779f 100755 --- a/tests/codec-regression.sh +++ b/tests/codec-regression.sh @@ -55,11 +55,6 @@ do_video_decoding # mpeg2 encoding interlaced using intra vlc do_video_encoding mpeg2threadivlc.mpg "-qscale 10 -vcodec mpeg2video -f mpeg1video -bf 2 -flags +ildct+ilme -flags2 +ivlc -threads 2" do_video_decoding - -# mpeg2 encoding interlaced -file=${outfile}mpeg2reuse.mpg -do_avconv $file $DEC_OPTS -me_threshold 256 -i ${target_path}/${outfile}mpeg2thread.mpg $ENC_OPTS -same_quant -me_threshold 256 -mb_threshold 1024 -vcodec mpeg2video -vsync 0 -f mpeg1video -bf 2 -flags +ildct+ilme -threads 4 -do_video_decoding fi if [ -n "$do_msmpeg4v2" ] ; then diff --git a/tests/ref/vsynth1/mpeg2thread b/tests/ref/vsynth1/mpeg2thread index 470c2e91b2..e32007cfcd 100644 --- a/tests/ref/vsynth1/mpeg2thread +++ b/tests/ref/vsynth1/mpeg2thread @@ -6,7 +6,3 @@ stddev: 7.63 PSNR: 30.48 MAXDIFF: 110 bytes: 7603200/ 7603200 791773 ./tests/data/vsynth1/mpeg2threadivlc.mpg d1658911ca83f5616c1d32abc40750de *./tests/data/mpeg2thread.vsynth1.out.yuv stddev: 7.63 PSNR: 30.48 MAXDIFF: 110 bytes: 7603200/ 7603200 -d119fe917dd81d1ff758b4ce684a8d9d *./tests/data/vsynth1/mpeg2reuse.mpg -2074636 ./tests/data/vsynth1/mpeg2reuse.mpg -92ced6afe8c02304943c400cce51a5f4 *./tests/data/mpeg2thread.vsynth1.out.yuv -stddev: 7.66 PSNR: 30.44 MAXDIFF: 111 bytes: 7603200/ 7603200 diff --git a/tests/ref/vsynth2/mpeg2thread b/tests/ref/vsynth2/mpeg2thread index 3c9c0d016d..6d86735254 100644 --- a/tests/ref/vsynth2/mpeg2thread +++ b/tests/ref/vsynth2/mpeg2thread @@ -6,7 +6,3 @@ stddev: 4.72 PSNR: 34.65 MAXDIFF: 72 bytes: 7603200/ 7603200 178801 ./tests/data/vsynth2/mpeg2threadivlc.mpg 8c6a7ed2eb73bd18fd2bb9829464100d *./tests/data/mpeg2thread.vsynth2.out.yuv stddev: 4.72 PSNR: 34.65 MAXDIFF: 72 bytes: 7603200/ 7603200 -864d6bf2982a61e510003a518be65a2d *./tests/data/vsynth2/mpeg2reuse.mpg -383419 ./tests/data/vsynth2/mpeg2reuse.mpg -bb20fa080cfd2b0a687ea7376ff4f902 *./tests/data/mpeg2thread.vsynth2.out.yuv -stddev: 4.73 PSNR: 34.63 MAXDIFF: 72 bytes: 7603200/ 7603200