summaryrefslogtreecommitdiffstats
path: root/libhb/decavcodec.c
diff options
context:
space:
mode:
authorRodeo <[email protected]>2012-12-31 16:54:11 +0000
committerRodeo <[email protected]>2012-12-31 16:54:11 +0000
commit01d1b85d7adecdc588d5450ee43c52809c0b1c3f (patch)
tree4f08f2381a18b4e62c4e5a82d7b610c68e8f1432 /libhb/decavcodec.c
parentb96ca4f7de03e2c1b2d6865a0ae65798c1afed6f (diff)
Bump libav to v9_beta3.
Miscellaneous bugfixes and improvements. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@5124 b64f7644-9d1e-0410-96f1-a4d463321fa5
Diffstat (limited to 'libhb/decavcodec.c')
-rw-r--r--libhb/decavcodec.c61
1 files changed, 31 insertions, 30 deletions
diff --git a/libhb/decavcodec.c b/libhb/decavcodec.c
index 5248d5f52..fe59300fe 100644
--- a/libhb/decavcodec.c
+++ b/libhb/decavcodec.c
@@ -423,10 +423,10 @@ static int decavcodecaBSInfo( hb_work_object_t *w, const hb_buffer_t *buf,
pos += len;
if ( pbuffer_size > 0 )
{
- AVFrame frame;
int got_frame;
+ AVFrame frame = { { 0 } };
AVPacket avp;
- av_init_packet( &avp );
+ av_init_packet(&avp);
avp.data = pbuffer;
avp.size = pbuffer_size;
@@ -504,31 +504,32 @@ static hb_buffer_t *copy_frame( hb_work_private_t *pv, AVFrame *frame )
hb_buffer_t *buf = hb_video_buffer_init( w, h );
uint8_t *dst = buf->data;
- if ( context->pix_fmt != PIX_FMT_YUV420P || w != context->width ||
- h != context->height )
+ if (context->pix_fmt != AV_PIX_FMT_YUV420P || w != context->width ||
+ h != context->height)
{
// have to convert to our internal color space and/or rescale
AVPicture dstpic;
- hb_avpicture_fill( &dstpic, buf );
+ hb_avpicture_fill(&dstpic, buf);
- if ( ! pv->sws_context ||
- pv->sws_width != context->width ||
- pv->sws_height != context->height ||
- pv->sws_pix_fmt != context->pix_fmt )
+ if (pv->sws_context == NULL ||
+ pv->sws_width != context->width ||
+ pv->sws_height != context->height ||
+ pv->sws_pix_fmt != context->pix_fmt)
{
- if( pv->sws_context )
- sws_freeContext( pv->sws_context );
- pv->sws_context = hb_sws_get_context(
- context->width, context->height, context->pix_fmt,
- w, h, PIX_FMT_YUV420P,
- SWS_LANCZOS|SWS_ACCURATE_RND);
- pv->sws_width = context->width;
- pv->sws_height = context->height;
+ if (pv->sws_context != NULL)
+ sws_freeContext(pv->sws_context);
+ pv->sws_context = hb_sws_get_context(context->width,
+ context->height,
+ context->pix_fmt,
+ w, h, AV_PIX_FMT_YUV420P,
+ SWS_LANCZOS|SWS_ACCURATE_RND);
+ pv->sws_width = context->width;
+ pv->sws_height = context->height;
pv->sws_pix_fmt = context->pix_fmt;
}
- sws_scale( pv->sws_context, (const uint8_t* const *)frame->data,
- frame->linesize, 0, context->height,
- dstpic.data, dstpic.linesize );
+ sws_scale(pv->sws_context,
+ (const uint8_t* const *)frame->data, frame->linesize,
+ 0, context->height, dstpic.data, dstpic.linesize);
}
else
{
@@ -690,7 +691,7 @@ static int decodeFrame( hb_work_object_t *w, uint8_t *data, int size, int sequen
{
hb_work_private_t *pv = w->private_data;
int got_picture, oldlevel = 0;
- AVFrame frame;
+ AVFrame frame = { { 0 } };
AVPacket avp;
if ( global_verbosity_level <= 1 )
@@ -699,11 +700,11 @@ static int decodeFrame( hb_work_object_t *w, uint8_t *data, int size, int sequen
av_log_set_level( AV_LOG_QUIET );
}
- av_init_packet( &avp );
+ av_init_packet(&avp);
avp.data = data;
avp.size = size;
- avp.pts = pts;
- avp.dts = dts;
+ avp.pts = pts;
+ avp.dts = dts;
/*
* libav avcodec_decode_video2() needs AVPacket flagged with AV_PKT_FLAG_KEY
* for some codecs. For example, sequence of PNG in a mov container.
@@ -727,10 +728,9 @@ static int decodeFrame( hb_work_object_t *w, uint8_t *data, int size, int sequen
// codecs it simply sets frame.key_frame. But for others, it only
// sets frame.pict_type. And for yet others neither gets set at all
// (qtrle).
- int key = frame.key_frame ||
- ( w->codec_param != CODEC_ID_H264 &&
- ( frame.pict_type == AV_PICTURE_TYPE_I ||
- frame.pict_type == 0 ) );
+ int key = frame.key_frame || (w->codec_param != AV_CODEC_ID_H264 &&
+ (frame.pict_type == 0 ||
+ frame.pict_type == AV_PICTURE_TYPE_I));
if( !key )
{
pv->wait_for_keyframe--;
@@ -1058,7 +1058,7 @@ static int setup_extradata( hb_work_object_t *w, hb_buffer_t *in )
// vc1t_read_header allocates 'extradata' to deal with header issues
// related to Microsoft's bizarre engineering notions. We alloc a chunk
// of space to make vc1 work then associate the codec with the context.
- if ( w->codec_param != CODEC_ID_VC1 )
+ if ( w->codec_param != AV_CODEC_ID_VC1 )
{
// we haven't been inflicted with M$ - allocate a little space as
// a marker and return success.
@@ -1434,9 +1434,10 @@ static void decodeAudio(hb_audio_t *audio, hb_work_private_t *pv, uint8_t *data,
pv->pts_next = pts;
while (pos < size)
{
- AVFrame frame;
int got_frame;
+ AVFrame frame = { { 0 } };
AVPacket avp;
+
av_init_packet(&avp);
avp.data = data + pos;
avp.size = size - pos;