[x264-devel] Fix spurious "stream properties changed" with --seek option on some inputs
Anton Mitrofanov
git at videolan.org
Sat Jul 23 02:38:51 CEST 2011
x264 | branch: master | Anton Mitrofanov <BugMaster at narod.ru> | Thu Jul 14 17:02:43 2011 +0400| [7fcf1cffae45b0dd614a9b8a1b17f4d8f44a823e] | committer: Jason Garrett-Glaser
Fix spurious "stream properties changed" with --seek option on some inputs
> http://git.videolan.org/gitweb.cgi/x264.git/?a=commit;h=7fcf1cffae45b0dd614a9b8a1b17f4d8f44a823e
---
filters/video/resize.c | 10 ++++++----
1 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/filters/video/resize.c b/filters/video/resize.c
index 1917f67..daed2d6 100644
--- a/filters/video/resize.c
+++ b/filters/video/resize.c
@@ -65,6 +65,7 @@ typedef struct
int pre_swap_chroma;
int post_swap_chroma;
int variable_input; /* input is capable of changing properties */
+ int working; /* we have already started working with frames */
frame_prop_t dst; /* desired output properties */
frame_prop_t scale; /* properties of the SwsContext input */
} resizer_hnd_t;
@@ -395,13 +396,13 @@ static int x264_init_sws_context( resizer_hnd_t *h )
return sws_init_context( h->ctx, NULL, NULL ) < 0;
}
-static int check_resizer( resizer_hnd_t *h, cli_pic_t *in, int frame )
+static int check_resizer( resizer_hnd_t *h, cli_pic_t *in )
{
frame_prop_t input_prop = { in->img.width, in->img.height, convert_csp_to_pix_fmt( in->img.csp ) };
if( !memcmp( &input_prop, &h->scale, sizeof(frame_prop_t) ) )
return 0;
/* also warn if the resizer was initialized after the first frame */
- if( h->ctx || frame )
+ if( h->ctx || h->working )
x264_cli_log( NAME, X264_LOG_WARNING, "stream properties changed at pts %"PRId64"\n", in->pts );
h->scale = input_prop;
if( !h->buffer_allocated )
@@ -502,7 +503,7 @@ static int init( hnd_t *handle, cli_vid_filter_t *filter, video_info_t *info, x2
if( !h->variable_input )
{
cli_pic_t input_pic = {{info->csp, info->width, info->height, 0}, 0};
- if( check_resizer( h, &input_pic, 0 ) )
+ if( check_resizer( h, &input_pic ) )
return -1;
}
@@ -524,8 +525,9 @@ static int get_frame( hnd_t handle, cli_pic_t *output, int frame )
resizer_hnd_t *h = handle;
if( h->prev_filter.get_frame( h->prev_hnd, output, frame ) )
return -1;
- if( h->variable_input && check_resizer( h, output, frame ) )
+ if( h->variable_input && check_resizer( h, output ) )
return -1;
+ h->working = 1;
if( h->pre_swap_chroma )
XCHG( uint8_t*, output->img.plane[1], output->img.plane[2] );
if( h->ctx )
More information about the x264-devel
mailing list