Browse Source

dvenc: print allowed profiles if the video doesn't conform to any of them.

tags/n0.11
Anton Khirnov 13 years ago
parent
commit
a839dbb94e
3 changed files with 21 additions and 2 deletions
  1. +4
    -2
      libavcodec/dv.c
  2. +12
    -0
      libavcodec/dvdata.c
  3. +5
    -0
      libavcodec/dvdata.h

+ 4
- 2
libavcodec/dv.c View File

@@ -323,9 +323,11 @@ av_cold int ff_dvvideo_init(AVCodecContext *avctx)
static av_cold int dvvideo_init_encoder(AVCodecContext *avctx)
{
if (!avpriv_dv_codec_profile(avctx)) {
av_log(avctx, AV_LOG_ERROR, "Found no DV profile for %ix%i %s video\n",
av_log(avctx, AV_LOG_ERROR, "Found no DV profile for %ix%i %s video. "
"Valid DV profiles are:\n",
avctx->width, avctx->height, av_get_pix_fmt_name(avctx->pix_fmt));
return -1;
ff_dv_print_profiles(avctx, AV_LOG_ERROR);
return AVERROR(EINVAL);
}

return ff_dvvideo_init(avctx);


+ 12
- 0
libavcodec/dvdata.c View File

@@ -25,6 +25,7 @@
*/

#include "libavutil/rational.h"
#include "libavutil/pixdesc.h"
#include "avcodec.h"
#include "dvdata.h"

@@ -322,3 +323,14 @@ const DVprofile* avpriv_dv_codec_profile(AVCodecContext* codec)

return NULL;
}

void ff_dv_print_profiles(void *logctx, int loglevel)
{
int i;
for (i = 0; i < FF_ARRAY_ELEMS(dv_profiles); i++) {
const DVprofile *p = &dv_profiles[i];
av_log(logctx, loglevel, "Frame size: %dx%d; pixel format: %s, "
"framerate: %d/%d\n", p->width, p->height, av_get_pix_fmt_name(p->pix_fmt),
p->time_base.den, p->time_base.num);
}
}

+ 5
- 0
libavcodec/dvdata.h View File

@@ -154,4 +154,9 @@ static inline void dv_calculate_mb_xy(DVVideoContext *s, DVwork_chunk *work_chun
}
}

/**
* Print all allowed DV profiles into logctx at specified logging level.
*/
void ff_dv_print_profiles(void *logctx, int loglevel);

#endif /* AVCODEC_DVDATA_H */

Loading…
Cancel
Save