case PIX_FMT_YUVJ440P:
case PIX_FMT_YUVJ444P:
case PIX_FMT_YUVA420P:
+ case PIX_FMT_YUV420P9LE:
+ case PIX_FMT_YUV420P9BE:
+ case PIX_FMT_YUV420P10LE:
+ case PIX_FMT_YUV420P10BE:
+ case PIX_FMT_YUV422P10LE:
+ case PIX_FMT_YUV422P10BE:
w_align= 16; //FIXME check for non mpeg style codecs and use less alignment
h_align= 16;
if(s->codec_id == CODEC_ID_MPEG2VIDEO || s->codec_id == CODEC_ID_MJPEG || s->codec_id == CODEC_ID_AMV || s->codec_id == CODEC_ID_THP || s->codec_id == CODEC_ID_H264)
int unaligned;
AVPicture picture;
int stride_align[4];
+ const int pixel_size = av_pix_fmt_descriptors[s->pix_fmt].comp[0].step_minus1+1;
avcodec_get_chroma_sub_sample(s->pix_fmt, &h_chroma_shift, &v_chroma_shift);
if((s->flags&CODEC_FLAG_EMU_EDGE) || !size[2])
buf->data[i] = buf->base[i];
else
- buf->data[i] = buf->base[i] + FFALIGN((buf->linesize[i]*EDGE_WIDTH>>v_shift) + (EDGE_WIDTH>>h_shift), stride_align[i]);
+ buf->data[i] = buf->base[i] + FFALIGN((buf->linesize[i]*EDGE_WIDTH>>v_shift) + (pixel_size*EDGE_WIDTH>>h_shift), stride_align[i]);
}
if(size[1] && !size[2])
ff_set_systematic_pal2((uint32_t*)buf->data[1], s->pix_fmt);
}
}
}
+ if (avctx->channel_layout && avctx->channels) {
+ if (av_get_channel_layout_nb_channels(avctx->channel_layout) != avctx->channels) {
+ av_log(avctx, AV_LOG_ERROR, "channel layout does not match number of channels\n");
+ ret = AVERROR(EINVAL);
+ goto free_and_end;
+ }
+ } else if (avctx->channel_layout) {
+ avctx->channels = av_get_channel_layout_nb_channels(avctx->channel_layout);
+ }
}
if(avctx->codec->init && !(avctx->active_thread_type&FF_THREAD_FRAME)){
av_log(avc, AV_LOG_WARNING, "%s not implemented. Update your Libav "
"version to the newest one from Git. If the problem still "
"occurs, it means that your file has a feature which has not "
- "been implemented.", feature);
+ "been implemented.\n", feature);
if(want_sample)
av_log_ask_for_sample(avc, NULL);
- else
- av_log(avc, AV_LOG_WARNING, "\n");
}
void av_log_ask_for_sample(void *avc, const char *msg, ...)