[FFmpeg-soc] [soc]: r5616 - in libavfilter: checkout.sh diffs/01_ffplay_filters.diff diffs/02_ffmpeg_filters.diff diffs/03_libavfilter_doc.diff
stefano
subversion at mplayerhq.hu
Mon Feb 1 23:45:01 CET 2010
Author: stefano
Date: Mon Feb 1 23:45:01 2010
New Revision: 5616
Log:
Update to FFmpeg r21600 / libswscale r30474.
Modified:
libavfilter/checkout.sh
libavfilter/diffs/01_ffplay_filters.diff
libavfilter/diffs/02_ffmpeg_filters.diff
libavfilter/diffs/03_libavfilter_doc.diff
Modified: libavfilter/checkout.sh
==============================================================================
--- libavfilter/checkout.sh Mon Feb 1 20:58:04 2010 (r5615)
+++ libavfilter/checkout.sh Mon Feb 1 23:45:01 2010 (r5616)
@@ -1,11 +1,11 @@
#! /bin/sh
echo "checking out pristine ffmpeg"
-svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk/ ffmpeg -r21414
+svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk/ ffmpeg -r21600
echo "downloading the corresponding version of swscale"
cd ffmpeg/libswscale
-svn up -r30419
+svn up -r30474
cd ../..
echo "patching ffmpeg"
Modified: libavfilter/diffs/01_ffplay_filters.diff
==============================================================================
--- libavfilter/diffs/01_ffplay_filters.diff Mon Feb 1 20:58:04 2010 (r5615)
+++ libavfilter/diffs/01_ffplay_filters.diff Mon Feb 1 23:45:01 2010 (r5616)
@@ -1,8 +1,8 @@
Index: ffplay.c
===================================================================
---- ffplay.c (revision 21414)
+--- ffplay.c (revision 21600)
+++ ffplay.c (working copy)
-@@ -30,6 +30,12 @@
+@@ -31,6 +31,12 @@
#include "libavcodec/colorspace.h"
#include "libavcodec/opt.h"
@@ -15,7 +15,7 @@ Index: ffplay.c
#include "cmdutils.h"
#include <SDL.h>
-@@ -70,7 +76,9 @@
+@@ -71,7 +77,9 @@
/* NOTE: the size must be big enough to compensate the hardware audio buffersize size */
#define SAMPLE_ARRAY_SIZE (2*65536)
@@ -25,12 +25,11 @@ Index: ffplay.c
typedef struct PacketQueue {
AVPacketList *first_pkt, *last_pkt;
-@@ -88,7 +96,12 @@
- double pts; ///<presentation time stamp for this picture
- SDL_Overlay *bmp;
+@@ -91,6 +99,11 @@
int width, height; /* source height & width */
-+ enum PixelFormat pix_fmt;
int allocated;
+ SDL_TimerID timer_id;
++ enum PixelFormat pix_fmt;
+
+#if CONFIG_AVFILTER
+ AVFilterPicRef *picref;
@@ -38,7 +37,7 @@ Index: ffplay.c
} VideoPicture;
typedef struct SubPicture {
-@@ -171,11 +184,17 @@
+@@ -174,7 +187,9 @@
int pictq_size, pictq_rindex, pictq_windex;
SDL_mutex *pictq_mutex;
SDL_cond *pictq_cond;
@@ -48,25 +47,27 @@ Index: ffplay.c
// QETimer *video_timer;
char filename[1024];
- int width, height, xleft, ytop;
-+
+@@ -185,6 +200,9 @@
+ int64_t last_dts_for_fault_detection;
+ int64_t last_pts_for_fault_detection;
+
+#if CONFIG_AVFILTER
+ AVFilterContext *out_video_filter; ///<the last filter in the video chain
+#endif
} VideoState;
static void show_help(void);
-@@ -216,6 +235,9 @@
+@@ -225,6 +243,9 @@
static int error_recognition = FF_ER_CAREFUL;
static int error_concealment = 3;
- static int decoder_reorder_pts= 0;
+ static int decoder_reorder_pts= -1;
+#if CONFIG_AVFILTER
+static char *vfilters = NULL;
+#endif
/* current context */
static int is_full_screen;
-@@ -647,6 +669,13 @@
+@@ -659,6 +680,13 @@
vp = &is->pictq[is->pictq_rindex];
if (vp->bmp) {
@@ -80,7 +81,7 @@ Index: ffplay.c
/* XXX: use variable in the frame */
if (is->video_st->sample_aspect_ratio.num)
aspect_ratio = av_q2d(is->video_st->sample_aspect_ratio);
-@@ -654,9 +683,10 @@
+@@ -666,9 +694,10 @@
aspect_ratio = av_q2d(is->video_st->codec->sample_aspect_ratio);
else
aspect_ratio = 0;
@@ -92,7 +93,7 @@ Index: ffplay.c
/* if an active format is indicated, then it overrides the
mpeg format */
#if 0
-@@ -859,9 +889,15 @@
+@@ -871,9 +900,15 @@
} else if(!is_full_screen && screen_width){
w = screen_width;
h = screen_height;
@@ -108,7 +109,7 @@ Index: ffplay.c
} else {
w = 640;
h = 480;
-@@ -1174,12 +1210,23 @@
+@@ -1184,12 +1219,23 @@
if (vp->bmp)
SDL_FreeYUVOverlay(vp->bmp);
@@ -136,7 +137,7 @@ Index: ffplay.c
SDL_LockMutex(is->pictq_mutex);
vp->allocated = 1;
-@@ -1195,7 +1242,9 @@
+@@ -1205,7 +1251,9 @@
{
VideoPicture *vp;
int dst_pix_fmt;
@@ -147,7 +148,7 @@ Index: ffplay.c
/* wait until we have space to put a new picture */
SDL_LockMutex(is->pictq_mutex);
while (is->pictq_size >= VIDEO_PICTURE_QUEUE_SIZE &&
-@@ -1211,8 +1260,13 @@
+@@ -1221,8 +1269,13 @@
/* alloc or resize hardware picture buffer */
if (!vp->bmp ||
@@ -161,7 +162,7 @@ Index: ffplay.c
SDL_Event event;
vp->allocated = 0;
-@@ -1237,6 +1291,11 @@
+@@ -1247,6 +1300,11 @@
/* if the frame is not skipped, then display it */
if (vp->bmp) {
AVPicture pict;
@@ -173,7 +174,7 @@ Index: ffplay.c
/* get a pointer on the bitmap */
SDL_LockYUVOverlay (vp->bmp);
-@@ -1250,18 +1309,30 @@
+@@ -1260,18 +1318,30 @@
pict.linesize[0] = vp->bmp->pitches[0];
pict.linesize[1] = vp->bmp->pitches[2];
pict.linesize[2] = vp->bmp->pitches[1];
@@ -208,44 +209,138 @@ Index: ffplay.c
/* update the bitmap content */
SDL_UnlockYUVOverlay(vp->bmp);
-@@ -1316,54 +1387,271 @@
+@@ -1328,87 +1398,303 @@
return queue_picture(is, src_frame, pts);
}
+-static int video_thread(void *arg)
+static int get_video_frame(VideoState *is, AVFrame *frame, uint64_t *pts, AVPacket *pkt)
-+{
-+ int len1, got_picture;
-+
+ {
+- VideoState *is = arg;
+- AVPacket pkt1, *pkt = &pkt1;
+ int len1, got_picture, i;
+- AVFrame *frame= avcodec_alloc_frame();
+- double pts;
+
+- for(;;) {
+- while (is->paused && !is->videoq.abort_request) {
+- SDL_Delay(10);
+- }
+- if (packet_queue_get(&is->videoq, pkt, 1) < 0)
+- break;
+ if (packet_queue_get(&is->videoq, pkt, 1) < 0)
+ return -1;
-+
+
+- if(pkt->data == flush_pkt.data){
+- avcodec_flush_buffers(is->video_st->codec);
+ if(pkt->data == flush_pkt.data){
+ avcodec_flush_buffers(is->video_st->codec);
+
+- SDL_LockMutex(is->pictq_mutex);
+- //Make sure there are no long delay timers (ideally we should just flush the que but thats harder)
+- for(i=0; i<VIDEO_PICTURE_QUEUE_SIZE; i++){
+- if(is->pictq[i].timer_id){
+- SDL_RemoveTimer(is->pictq[i].timer_id);
+- is->pictq[i].timer_id=0;
+- schedule_refresh(is, 1);
+- }
++ SDL_LockMutex(is->pictq_mutex);
++ //Make sure there are no long delay timers (ideally we should just flush the que but thats harder)
++ for(i=0; i<VIDEO_PICTURE_QUEUE_SIZE; i++){
++ if(is->pictq[i].timer_id){
++ SDL_RemoveTimer(is->pictq[i].timer_id);
++ is->pictq[i].timer_id=0;
++ schedule_refresh(is, 1);
+ }
+- while (is->pictq_size && !is->videoq.abort_request) {
+- SDL_CondWait(is->pictq_cond, is->pictq_mutex);
+- }
+- SDL_UnlockMutex(is->pictq_mutex);
++ }
++ while (is->pictq_size && !is->videoq.abort_request) {
++ SDL_CondWait(is->pictq_cond, is->pictq_mutex);
++ }
++ SDL_UnlockMutex(is->pictq_mutex);
+
+- is->last_dts_for_fault_detection=
+- is->last_pts_for_fault_detection= INT64_MIN;
+- is->frame_last_pts= AV_NOPTS_VALUE;
+- is->frame_last_delay = 0;
++ is->last_dts_for_fault_detection=
++ is->last_pts_for_fault_detection= INT64_MIN;
++ is->frame_last_pts= AV_NOPTS_VALUE;
++ is->frame_last_delay = 0;
+
+- continue;
+- }
+ return 0;
+ }
-+
+
+- /* NOTE: ipts is the PTS of the _first_ picture beginning in
+- this packet, if any */
+- is->video_st->codec->reordered_opaque= pkt->pts;
+- len1 = avcodec_decode_video2(is->video_st->codec,
+- frame, &got_picture,
+- pkt);
+ /* NOTE: ipts is the PTS of the _first_ picture beginning in
+ this packet, if any */
+ is->video_st->codec->reordered_opaque= pkt->pts;
+ len1 = avcodec_decode_video2(is->video_st->codec,
+ frame, &got_picture,
+ pkt);
-+
-+ if( (decoder_reorder_pts || pkt->dts == AV_NOPTS_VALUE)
+
+- if (got_picture) {
+- if(pkt->dts != AV_NOPTS_VALUE){
+- is->faulty_dts += pkt->dts <= is->last_dts_for_fault_detection;
+- is->last_dts_for_fault_detection= pkt->dts;
+- }
+- if(frame->reordered_opaque != AV_NOPTS_VALUE){
+- is->faulty_pts += frame->reordered_opaque <= is->last_pts_for_fault_detection;
+- is->last_pts_for_fault_detection= frame->reordered_opaque;
+- }
++ if (got_picture) {
++ if(pkt->dts != AV_NOPTS_VALUE){
++ is->faulty_dts += pkt->dts <= is->last_dts_for_fault_detection;
++ is->last_dts_for_fault_detection= pkt->dts;
+ }
++ if(frame->reordered_opaque != AV_NOPTS_VALUE){
++ is->faulty_pts += frame->reordered_opaque <= is->last_pts_for_fault_detection;
++ is->last_pts_for_fault_detection= frame->reordered_opaque;
++ }
++ }
+
+- if( ( decoder_reorder_pts==1
+- || (decoder_reorder_pts && is->faulty_pts<is->faulty_dts)
+- || pkt->dts == AV_NOPTS_VALUE)
+- && frame->reordered_opaque != AV_NOPTS_VALUE)
+- pts= frame->reordered_opaque;
+- else if(pkt->dts != AV_NOPTS_VALUE)
+- pts= pkt->dts;
+- else
+- pts= 0;
+- pts *= av_q2d(is->video_st->time_base);
++ if( ( decoder_reorder_pts==1
++ || (decoder_reorder_pts && is->faulty_pts<is->faulty_dts)
++ || pkt->dts == AV_NOPTS_VALUE)
+ && frame->reordered_opaque != AV_NOPTS_VALUE)
+ *pts= frame->reordered_opaque;
+ else if(pkt->dts != AV_NOPTS_VALUE)
+ *pts= pkt->dts;
+ else
+ *pts= 0;
-+
-+// if (len1 < 0)
-+// break;
-+ /* put pts into units of 1/AV_TIME_BASE */
+
++ /* put pts into units of 1/AV_TIME_BASE */
+ *pts = AV_TIME_BASE * (*pts) * is->video_st->time_base.num /
+ is->video_st->time_base.den;
+
-+ if(got_picture)
+ // if (len1 < 0)
+ // break;
+- if (got_picture) {
+- if (output_picture2(is, frame, pts) < 0)
+- goto the_end;
+- }
+- av_free_packet(pkt);
++ if (got_picture)
+ return 1;
+ return 0;
+}
@@ -391,16 +486,13 @@ Index: ffplay.c
+};
+#endif /* CONFIG_AVFILTER */
+
- static int video_thread(void *arg)
- {
- VideoState *is = arg;
-- AVPacket pkt1, *pkt = &pkt1;
-- int len1, got_picture;
- AVFrame *frame= avcodec_alloc_frame();
++static int video_thread(void *arg)
++{
++ VideoState *is = arg;
++ AVFrame *frame= avcodec_alloc_frame();
+ uint64_t pts_int;
- double pts;
++ double pts;
+ int ret;
-
+
+#if CONFIG_AVFILTER
+ AVFilterContext *filt_src = NULL, *filt_out = NULL;
@@ -444,36 +536,23 @@ Index: ffplay.c
+ is->out_video_filter = filt_out;
+#endif
+
- for(;;) {
-- while (is->paused && !is->videoq.abort_request) {
++ for(;;) {
+#if !CONFIG_AVFILTER
+ AVPacket pkt;
+#endif
+ while (is->paused && !is->videoq.abort_request)
- SDL_Delay(10);
-- }
-- if (packet_queue_get(&is->videoq, pkt, 1) < 0)
-- break;
++ SDL_Delay(10);
+#if CONFIG_AVFILTER
+ ret = get_filtered_video_frame(filt_out, frame, &pts_int);
+#else
+ ret = get_video_frame(is, frame, &pts_int, &pkt);
+#endif
-
-- if(pkt->data == flush_pkt.data){
-- avcodec_flush_buffers(is->video_st->codec);
++
+ if (ret < 0) goto the_end;
+
+ if (!ret)
- continue;
-- }
-
-- /* NOTE: ipts is the PTS of the _first_ picture beginning in
-- this packet, if any */
-- is->video_st->codec->reordered_opaque= pkt->pts;
-- len1 = avcodec_decode_video2(is->video_st->codec,
-- frame, &got_picture,
-- pkt);
++ continue;
++
+ pts = pts_int;
+ pts /= AV_TIME_BASE;
+ ret = output_picture2(is, frame, pts);
@@ -482,23 +561,7 @@ Index: ffplay.c
+#endif
+ if (ret < 0)
+ goto the_end;
-
-- if( (decoder_reorder_pts || pkt->dts == AV_NOPTS_VALUE)
-- && frame->reordered_opaque != AV_NOPTS_VALUE)
-- pts= frame->reordered_opaque;
-- else if(pkt->dts != AV_NOPTS_VALUE)
-- pts= pkt->dts;
-- else
-- pts= 0;
-- pts *= av_q2d(is->video_st->time_base);
--
--// if (len1 < 0)
--// break;
-- if (got_picture) {
-- if (output_picture2(is, frame, pts) < 0)
-- goto the_end;
-- }
-- av_free_packet(pkt);
++
if (step)
if (cur_stream)
stream_pause(cur_stream);
@@ -511,7 +574,7 @@ Index: ffplay.c
av_free(frame);
return 0;
}
-@@ -2137,6 +2425,12 @@
+@@ -2187,6 +2473,12 @@
/* free all pictures */
for(i=0;i<VIDEO_PICTURE_QUEUE_SIZE; i++) {
vp = &is->pictq[i];
@@ -524,7 +587,7 @@ Index: ffplay.c
if (vp->bmp) {
SDL_FreeYUVOverlay(vp->bmp);
vp->bmp = NULL;
-@@ -2146,8 +2440,10 @@
+@@ -2196,8 +2488,10 @@
SDL_DestroyCond(is->pictq_cond);
SDL_DestroyMutex(is->subpq_mutex);
SDL_DestroyCond(is->subpq_cond);
@@ -535,7 +598,7 @@ Index: ffplay.c
av_free(is);
}
-@@ -2239,6 +2535,9 @@
+@@ -2289,6 +2583,9 @@
av_free(avcodec_opts[i]);
av_free(avformat_opts);
av_free(sws_opts);
@@ -545,7 +608,7 @@ Index: ffplay.c
if (show_status)
printf("\n");
SDL_Quit();
-@@ -2484,6 +2783,9 @@
+@@ -2539,6 +2836,9 @@
{ "ec", OPT_INT | HAS_ARG | OPT_EXPERT, {(void*)&error_concealment}, "set error concealment options", "bit_mask" },
{ "sync", HAS_ARG | OPT_FUNC2 | OPT_EXPERT, {(void*)opt_sync}, "set audio-video sync. type (type=audio/video/ext)", "type" },
{ "threads", HAS_ARG | OPT_FUNC2 | OPT_EXPERT, {(void*)opt_thread_count}, "thread count", "count" },
@@ -555,7 +618,7 @@ Index: ffplay.c
{ "default", OPT_FUNC2 | HAS_ARG | OPT_AUDIO | OPT_VIDEO | OPT_EXPERT, {(void*)opt_default}, "generic catch all option", "" },
{ NULL, },
};
-@@ -2531,13 +2833,18 @@
+@@ -2586,13 +2886,18 @@
/* register all codecs, demux and protocols */
avcodec_register_all();
avdevice_register_all();
Modified: libavfilter/diffs/02_ffmpeg_filters.diff
==============================================================================
--- libavfilter/diffs/02_ffmpeg_filters.diff Mon Feb 1 20:58:04 2010 (r5615)
+++ libavfilter/diffs/02_ffmpeg_filters.diff Mon Feb 1 23:45:01 2010 (r5616)
@@ -1,8 +1,8 @@
Index: ffmpeg.c
===================================================================
---- ffmpeg.c (revision 21414)
+--- ffmpeg.c (revision 21600)
+++ ffmpeg.c (working copy)
-@@ -41,6 +41,13 @@
+@@ -42,6 +42,13 @@
#include "libavutil/avstring.h"
#include "libavformat/os_support.h"
@@ -16,7 +16,7 @@ Index: ffmpeg.c
#if HAVE_SYS_RESOURCE_H
#include <sys/types.h>
#include <sys/resource.h>
-@@ -143,6 +150,10 @@
+@@ -144,6 +151,10 @@
static int loop_input = 0;
static int loop_output = AVFMT_NOOUTPUTLOOP;
static int qp_hist = 0;
@@ -27,10 +27,10 @@ Index: ffmpeg.c
static int intra_only = 0;
static int audio_sample_rate = 44100;
-@@ -299,6 +310,13 @@
- is not defined */
+@@ -301,6 +312,13 @@
int64_t pts; /* current pts */
int is_start; /* is 1 at the start and after a discontinuity */
+ int showed_multi_packet_warning;
+#if CONFIG_AVFILTER
+ AVFilterContext *out_video_filter;
+ AVFilterContext *input_video_filter;
@@ -41,7 +41,7 @@ Index: ffmpeg.c
} AVInputStream;
typedef struct AVInputFile {
-@@ -314,6 +332,184 @@
+@@ -316,6 +334,184 @@
static struct termios oldtty;
#endif
@@ -226,7 +226,7 @@ Index: ffmpeg.c
static void term_exit(void)
{
#if HAVE_TERMIOS_H
-@@ -458,6 +654,10 @@
+@@ -460,6 +656,10 @@
allocated_audio_buf_size= allocated_audio_out_size= 0;
av_free(samples);
@@ -237,7 +237,7 @@ Index: ffmpeg.c
if (received_sigterm) {
fprintf(stderr,
"Received signal %d: terminating.\n",
-@@ -890,7 +1090,9 @@
+@@ -892,7 +1092,9 @@
int *frame_size)
{
int nb_frames, i, ret;
@@ -247,7 +247,7 @@ Index: ffmpeg.c
AVFrame *final_picture, *formatted_picture, *resampling_dst, *padding_src;
AVFrame picture_crop_temp, picture_pad_temp;
AVCodecContext *enc, *dec;
-@@ -936,6 +1138,9 @@
+@@ -938,6 +1140,9 @@
if (nb_frames <= 0)
return;
@@ -257,7 +257,7 @@ Index: ffmpeg.c
if (ost->video_crop) {
if (av_picture_crop((AVPicture *)&picture_crop_temp, (AVPicture *)in_picture, dec->pix_fmt, ost->topBand, ost->leftBand) < 0) {
fprintf(stderr, "error cropping picture\n");
-@@ -947,6 +1152,7 @@
+@@ -949,6 +1154,7 @@
} else {
formatted_picture = in_picture;
}
@@ -265,7 +265,7 @@ Index: ffmpeg.c
final_picture = formatted_picture;
padding_src = formatted_picture;
-@@ -973,6 +1179,7 @@
+@@ -975,6 +1181,7 @@
av_exit(1);
}
@@ -273,7 +273,7 @@ Index: ffmpeg.c
if (ost->video_resample) {
padding_src = NULL;
final_picture = &ost->pict_tmp;
-@@ -1020,6 +1227,7 @@
+@@ -1022,6 +1229,7 @@
sws_scale(ost->img_resample_ctx, formatted_picture->data, formatted_picture->linesize,
0, ost->resample_height, resampling_dst->data, resampling_dst->linesize);
}
@@ -281,7 +281,7 @@ Index: ffmpeg.c
if (ost->video_pad) {
av_picture_pad((AVPicture*)final_picture, (AVPicture *)padding_src,
-@@ -1285,6 +1493,10 @@
+@@ -1287,6 +1495,10 @@
static unsigned int samples_size= 0;
AVSubtitle subtitle, *subtitle_to_free;
int got_subtitle;
@@ -292,7 +292,7 @@ Index: ffmpeg.c
AVPacket avpkt;
int bps = av_get_bits_per_sample_format(ist->st->codec->sample_fmt)>>3;
-@@ -1410,6 +1622,15 @@
+@@ -1414,6 +1626,15 @@
&buffer_to_free);
}
@@ -308,7 +308,7 @@ Index: ffmpeg.c
// preprocess audio (volume)
if (ist->st->codec->codec_type == CODEC_TYPE_AUDIO) {
if (audio_volume != 256) {
-@@ -1431,10 +1652,18 @@
+@@ -1435,10 +1656,18 @@
if (pts > now)
usleep(pts - now);
}
@@ -328,7 +328,7 @@ Index: ffmpeg.c
for(i=0;i<nb_ostreams;i++) {
int frame_size;
-@@ -1452,6 +1681,9 @@
+@@ -1456,6 +1685,9 @@
do_audio_out(os, ost, ist, decoded_data_buf, decoded_data_size);
break;
case CODEC_TYPE_VIDEO:
@@ -338,7 +338,7 @@ Index: ffmpeg.c
do_video_out(os, ost, ist, &picture, &frame_size);
if (vstats_filename && frame_size)
do_video_stats(os, ost, frame_size);
-@@ -1517,7 +1749,17 @@
+@@ -1521,7 +1753,17 @@
av_free_packet(&opkt);
}
}
@@ -356,7 +356,7 @@ Index: ffmpeg.c
av_free(buffer_to_free);
/* XXX: allocate the subtitles in the codec ? */
if (subtitle_to_free) {
-@@ -1971,9 +2213,10 @@
+@@ -1975,9 +2217,10 @@
av_exit(1);
}
@@ -368,7 +368,7 @@ Index: ffmpeg.c
codec->bits_per_raw_sample= 0;
}
ost->resample_height = icodec->height - (frame_topBand + frame_bottomBand);
-@@ -1981,6 +2224,13 @@
+@@ -1985,6 +2228,13 @@
ost->resample_pix_fmt= icodec->pix_fmt;
ost->encoding_needed = 1;
ist->decoding_needed = 1;
@@ -382,7 +382,7 @@ Index: ffmpeg.c
break;
case CODEC_TYPE_SUBTITLE:
ost->encoding_needed = 1;
-@@ -2367,6 +2617,12 @@
+@@ -2375,6 +2625,12 @@
avcodec_close(ist->st->codec);
}
}
@@ -395,7 +395,7 @@ Index: ffmpeg.c
/* finished ! */
ret = 0;
-@@ -3922,6 +4178,9 @@
+@@ -3929,6 +4185,9 @@
{ "psnr", OPT_BOOL | OPT_EXPERT | OPT_VIDEO, {(void*)&do_psnr}, "calculate PSNR of compressed frames" },
{ "vstats", OPT_EXPERT | OPT_VIDEO, {(void*)&opt_vstats}, "dump video coding statistics to file" },
{ "vstats_file", HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void*)opt_vstats_file}, "dump video coding statistics to file", "file" },
@@ -405,7 +405,7 @@ Index: ffmpeg.c
{ "intra_matrix", HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void*)opt_intra_matrix}, "specify intra matrix coeffs", "matrix" },
{ "inter_matrix", HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void*)opt_inter_matrix}, "specify inter matrix coeffs", "matrix" },
{ "top", HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void*)opt_top_field_first}, "top=1/bottom=0/auto=-1 field first", "" },
-@@ -3982,6 +4241,9 @@
+@@ -3989,6 +4248,9 @@
avcodec_register_all();
avdevice_register_all();
Modified: libavfilter/diffs/03_libavfilter_doc.diff
==============================================================================
--- libavfilter/diffs/03_libavfilter_doc.diff Mon Feb 1 20:58:04 2010 (r5615)
+++ libavfilter/diffs/03_libavfilter_doc.diff Mon Feb 1 23:45:01 2010 (r5616)
@@ -1,6 +1,6 @@
Index: doc/libavfilter.texi
===================================================================
---- doc/libavfilter.texi (revision 21414)
+--- doc/libavfilter.texi (revision 21600)
+++ doc/libavfilter.texi (working copy)
@@ -111,6 +111,20 @@
More information about the FFmpeg-soc
mailing list