mirror of https://github.com/mpv-player/mpv
workaround bugs & error resilience ffmpeg decoder options
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@6266 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
0d20991093
commit
3efbc894b0
|
@ -125,6 +125,9 @@
|
||||||
{"flip", &flip, CONF_TYPE_FLAG, 0, -1, 1, NULL},
|
{"flip", &flip, CONF_TYPE_FLAG, 0, -1, 1, NULL},
|
||||||
{"noflip", &flip, CONF_TYPE_FLAG, 0, -1, 0, NULL},
|
{"noflip", &flip, CONF_TYPE_FLAG, 0, -1, 0, NULL},
|
||||||
|
|
||||||
|
#ifdef USE_LIBAVCODEC
|
||||||
|
{"lavdopts", lavc_decode_opts_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
|
||||||
|
#endif
|
||||||
// ------------------------- subtitles options --------------------
|
// ------------------------- subtitles options --------------------
|
||||||
|
|
||||||
#ifdef USE_SUB
|
#ifdef USE_SUB
|
||||||
|
@ -236,4 +239,8 @@ struct config mfopts_conf[]={
|
||||||
|
|
||||||
extern char** vo_plugin_args;
|
extern char** vo_plugin_args;
|
||||||
|
|
||||||
|
#ifdef USE_LIBAVCODEC
|
||||||
|
extern struct config lavc_decode_opts_conf[];
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -51,6 +51,19 @@ typedef struct {
|
||||||
//unsigned int lavc_pp=0;
|
//unsigned int lavc_pp=0;
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
|
#include "cfgparser.h"
|
||||||
|
|
||||||
|
static int lavc_param_workaround_bugs=0;
|
||||||
|
static int lavc_param_error_resilience=0;
|
||||||
|
|
||||||
|
struct config lavc_decode_opts_conf[]={
|
||||||
|
#if LIBAVCODEC_BUILD >= 4611
|
||||||
|
{"bug", &lavc_param_workaround_bugs, CONF_TYPE_INT, CONF_RANGE, 0, 99, NULL},
|
||||||
|
{"ver", &lavc_param_error_resilience, CONF_TYPE_INT, CONF_RANGE, -1, 99, NULL},
|
||||||
|
#endif
|
||||||
|
{NULL, NULL, 0, 0, 0, 0, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
// to set/get/query special features/parameters
|
// to set/get/query special features/parameters
|
||||||
static int control(sh_video_t *sh,int cmd,void* arg,...){
|
static int control(sh_video_t *sh,int cmd,void* arg,...){
|
||||||
vd_ffmpeg_ctx *ctx = sh->context;
|
vd_ffmpeg_ctx *ctx = sh->context;
|
||||||
|
@ -97,6 +110,11 @@ static int init(sh_video_t *sh){
|
||||||
|
|
||||||
avctx->width = sh->disp_w;
|
avctx->width = sh->disp_w;
|
||||||
avctx->height= sh->disp_h;
|
avctx->height= sh->disp_h;
|
||||||
|
#if LIBAVCODEC_BUILD >= 4611
|
||||||
|
avctx->workaround_bugs= lavc_param_workaround_bugs;
|
||||||
|
avctx->error_resilience= lavc_param_error_resilience;
|
||||||
|
#endif
|
||||||
|
|
||||||
mp_dbg(MSGT_DECVIDEO,MSGL_DBG2,"libavcodec.size: %d x %d\n",avctx->width,avctx->height);
|
mp_dbg(MSGT_DECVIDEO,MSGL_DBG2,"libavcodec.size: %d x %d\n",avctx->width,avctx->height);
|
||||||
if (sh->format == mmioFOURCC('R', 'V', '1', '3'))
|
if (sh->format == mmioFOURCC('R', 'V', '1', '3'))
|
||||||
avctx->sub_id = 3;
|
avctx->sub_id = 3;
|
||||||
|
@ -199,10 +217,9 @@ static mp_image_t* decode(sh_video_t *sh,void* data,int len,int flags){
|
||||||
|
|
||||||
ret = avcodec_decode_video(avctx, &lavc_picture,
|
ret = avcodec_decode_video(avctx, &lavc_picture,
|
||||||
&got_picture, data, len);
|
&got_picture, data, len);
|
||||||
|
|
||||||
if(ret<0) mp_msg(MSGT_DECVIDEO,MSGL_WARN, "Error while decoding frame!\n");
|
if(ret<0) mp_msg(MSGT_DECVIDEO,MSGL_WARN, "Error while decoding frame!\n");
|
||||||
if(!got_picture) return NULL; // skipped image
|
if(!got_picture) return NULL; // skipped image
|
||||||
|
|
||||||
if (avctx->aspect_ratio_info != ctx->last_aspect ||
|
if (avctx->aspect_ratio_info != ctx->last_aspect ||
|
||||||
avctx->width != sh->disp_w ||
|
avctx->width != sh->disp_w ||
|
||||||
avctx->height != sh->disp_h ||
|
avctx->height != sh->disp_h ||
|
||||||
|
|
Loading…
Reference in New Issue