enum AVPixelFormat choose_pixel_fmt(AVStream *st, AVCodecContext *avctx,
const AVCodec *codec, enum AVPixelFormat target);
-void choose_sample_fmt(AVStream *st, const AVCodec *codec);
int configure_filtergraph(FilterGraph *fg);
int configure_output_filter(FilterGraph *fg, OutputFilter *ofilter, AVFilterInOut *out);
return target;
}
-void choose_sample_fmt(AVStream *st, const AVCodec *codec)
-{
- if (codec && codec->sample_fmts) {
- const enum AVSampleFormat *p = codec->sample_fmts;
- for (; *p != -1; p++) {
- if (*p == st->codecpar->format)
- break;
- }
- if (*p == -1) {
- const AVCodecDescriptor *desc = avcodec_descriptor_get(codec->id);
- if(desc && (desc->props & AV_CODEC_PROP_LOSSLESS) && av_get_sample_fmt_name(st->codecpar->format) > av_get_sample_fmt_name(codec->sample_fmts[0]))
- av_log(NULL, AV_LOG_ERROR, "Conversion will not be lossless.\n");
- if(av_get_sample_fmt_name(st->codecpar->format))
- av_log(NULL, AV_LOG_WARNING,
- "Incompatible sample format '%s' for codec '%s', auto-selecting format '%s'\n",
- av_get_sample_fmt_name(st->codecpar->format),
- codec->name,
- av_get_sample_fmt_name(codec->sample_fmts[0]));
- st->codecpar->format = codec->sample_fmts[0];
- }
- }
-}
-
static char *choose_pix_fmts(OutputFilter *ofilter)
{
OutputStream *ost = ofilter->ost;