return ret;
}
+int hb_av_find_stream_info(AVFormatContext *ic)
+{
+ int ret;
+ hb_lock( hb_avcodec_lock );
+ ret = av_find_stream_info( ic );
+ hb_unlock( hb_avcodec_lock );
+ return ret;
+}
+
+struct SwsContext*
+hb_sws_get_context(int srcW, int srcH, enum PixelFormat srcFormat,
+ int dstW, int dstH, enum PixelFormat dstFormat,
+ int flags)
+{
+ struct SwsContext * ctx;
+
+#if 0
+ // sws_getContext is being depricated. But it appears that
+ // the new method isn't quite wrung out yet. So when it is
+ // this code should be fixed up and enabled.
+ ctx = sws_alloc_context();
+ if ( ctx )
+ {
+ av_set_int(ctx, "srcw", srcW);
+ av_set_int(ctx, "srch", srcH);
+ av_set_int(ctx, "src_format", srcFormat);
+ av_set_int(ctx, "dstw", dstW);
+ av_set_int(ctx, "dsth", dstH);
+ av_set_int(ctx, "dst_format", dstFormat);
+ av_set_int(ctx, "sws_flags", flags);
+
+ if (sws_init_context(ctx, NULL, NULL) < 0) {
+ fprintf(stderr, "Cannot initialize resampling context\n");
+ sws_freeContext(ctx);
+ ctx = NULL;
+ }
+ }
+#else
+ ctx = sws_getContext(srcW, srcH, srcFormat, dstW, dstH, dstFormat,
+ flags, NULL, NULL, NULL);
+#endif
+ return ctx;
+}
+
int hb_avcodec_close(AVCodecContext *avctx)
{
int ret;
#ifdef __APPLE__
hb_register( &hb_encca_aac );
#endif
+ hb_register( &hb_encac3 );
return h;
}
#ifdef __APPLE__
hb_register( &hb_encca_aac );
#endif
+ hb_register( &hb_encac3 );
return h;
}
AVPicture pic_in, pic_preview, pic_deint, pic_crop, pic_scale;
struct SwsContext * context;
int i;
+ int deint_width = ((title->width + 7) >> 3) << 3;
int rgb_width = ((job->width + 7) >> 3) << 3;
int preview_size;
swsflags = SWS_LANCZOS | SWS_ACCURATE_RND;
buf1 = av_malloc( avpicture_get_size( PIX_FMT_YUV420P, title->width, title->height ) );
- buf2 = av_malloc( avpicture_get_size( PIX_FMT_YUV420P, title->width, title->height ) );
+ buf2 = av_malloc( avpicture_get_size( PIX_FMT_YUV420P, deint_width, title->height ) );
buf3 = av_malloc( avpicture_get_size( PIX_FMT_YUV420P, rgb_width, job->height ) );
buf4 = av_malloc( avpicture_get_size( PIX_FMT_RGB32, rgb_width, job->height ) );
avpicture_fill( &pic_in, buf1, PIX_FMT_YUV420P,
title->width, title->height );
avpicture_fill( &pic_deint, buf2, PIX_FMT_YUV420P,
- title->width, title->height );
+ deint_width, title->height );
avpicture_fill( &pic_scale, buf3, PIX_FMT_YUV420P,
rgb_width, job->height );
avpicture_fill( &pic_preview, buf4, PIX_FMT_RGB32,
}
// Get scaling context
- context = sws_getContext(title->width - (job->crop[2] + job->crop[3]),
+ context = hb_sws_get_context(title->width - (job->crop[2] + job->crop[3]),
title->height - (job->crop[0] + job->crop[1]),
PIX_FMT_YUV420P,
job->width, job->height, PIX_FMT_YUV420P,
- swsflags, NULL, NULL, NULL);
+ swsflags);
// Scale
sws_scale(context,
sws_freeContext( context );
// Get preview context
- context = sws_getContext(rgb_width, job->height, PIX_FMT_YUV420P,
+ context = hb_sws_get_context(rgb_width, job->height, PIX_FMT_YUV420P,
rgb_width, job->height, PIX_FMT_RGB32,
- swsflags, NULL, NULL, NULL);
+ swsflags);
// Create preview
sws_scale(context,