| @@ -323,9 +323,11 @@ av_cold int ff_dvvideo_init(AVCodecContext *avctx) | |||||
| static av_cold int dvvideo_init_encoder(AVCodecContext *avctx) | static av_cold int dvvideo_init_encoder(AVCodecContext *avctx) | ||||
| { | { | ||||
| if (!avpriv_dv_codec_profile(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)); | 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); | return ff_dvvideo_init(avctx); | ||||
| @@ -25,6 +25,7 @@ | |||||
| */ | */ | ||||
| #include "libavutil/rational.h" | #include "libavutil/rational.h" | ||||
| #include "libavutil/pixdesc.h" | |||||
| #include "avcodec.h" | #include "avcodec.h" | ||||
| #include "dvdata.h" | #include "dvdata.h" | ||||
| @@ -322,3 +323,14 @@ const DVprofile* avpriv_dv_codec_profile(AVCodecContext* codec) | |||||
| return NULL; | 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); | |||||
| } | |||||
| } | |||||
| @@ -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 */ | #endif /* AVCODEC_DVDATA_H */ | ||||