1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-12-23 12:43:46 +02:00

avdevice/decklink_enc: convert to codecpar

Signed-off-by: Marton Balint <cus@passwd.hu>
This commit is contained in:
Marton Balint 2017-02-17 21:53:00 +01:00
parent 6d856b2579
commit e0eb0bdab9

View File

@ -92,20 +92,20 @@ static int decklink_setup_video(AVFormatContext *avctx, AVStream *st)
{ {
struct decklink_cctx *cctx = (struct decklink_cctx *)avctx->priv_data; struct decklink_cctx *cctx = (struct decklink_cctx *)avctx->priv_data;
struct decklink_ctx *ctx = (struct decklink_ctx *)cctx->ctx; struct decklink_ctx *ctx = (struct decklink_ctx *)cctx->ctx;
AVCodecContext *c = st->codec; AVCodecParameters *c = st->codecpar;
if (ctx->video) { if (ctx->video) {
av_log(avctx, AV_LOG_ERROR, "Only one video stream is supported!\n"); av_log(avctx, AV_LOG_ERROR, "Only one video stream is supported!\n");
return -1; return -1;
} }
if (c->pix_fmt != AV_PIX_FMT_UYVY422) { if (c->format != AV_PIX_FMT_UYVY422) {
av_log(avctx, AV_LOG_ERROR, "Unsupported pixel format!" av_log(avctx, AV_LOG_ERROR, "Unsupported pixel format!"
" Only AV_PIX_FMT_UYVY422 is supported.\n"); " Only AV_PIX_FMT_UYVY422 is supported.\n");
return -1; return -1;
} }
if (ff_decklink_set_format(avctx, c->width, c->height, if (ff_decklink_set_format(avctx, c->width, c->height,
c->time_base.num, c->time_base.den)) { st->time_base.num, st->time_base.den)) {
av_log(avctx, AV_LOG_ERROR, "Unsupported video size or framerate!" av_log(avctx, AV_LOG_ERROR, "Unsupported video size or framerate!"
" Check available formats with -list_formats 1.\n"); " Check available formats with -list_formats 1.\n");
return -1; return -1;
@ -121,8 +121,8 @@ static int decklink_setup_video(AVFormatContext *avctx, AVStream *st)
ctx->dlo->SetScheduledFrameCompletionCallback(ctx->output_callback); ctx->dlo->SetScheduledFrameCompletionCallback(ctx->output_callback);
/* Start video semaphore. */ /* Start video semaphore. */
ctx->frames_preroll = c->time_base.den * ctx->preroll; ctx->frames_preroll = st->time_base.den * ctx->preroll;
if (c->time_base.den > 1000) if (st->time_base.den > 1000)
ctx->frames_preroll /= 1000; ctx->frames_preroll /= 1000;
/* Buffer twice as many frames as the preroll. */ /* Buffer twice as many frames as the preroll. */
@ -131,7 +131,7 @@ static int decklink_setup_video(AVFormatContext *avctx, AVStream *st)
sem_init(&ctx->semaphore, 0, ctx->frames_buffer); sem_init(&ctx->semaphore, 0, ctx->frames_buffer);
/* The device expects the framerate to be fixed. */ /* The device expects the framerate to be fixed. */
avpriv_set_pts_info(st, 64, c->time_base.num, c->time_base.den); avpriv_set_pts_info(st, 64, st->time_base.num, st->time_base.den);
ctx->video = 1; ctx->video = 1;
@ -142,7 +142,7 @@ static int decklink_setup_audio(AVFormatContext *avctx, AVStream *st)
{ {
struct decklink_cctx *cctx = (struct decklink_cctx *)avctx->priv_data; struct decklink_cctx *cctx = (struct decklink_cctx *)avctx->priv_data;
struct decklink_ctx *ctx = (struct decklink_ctx *)cctx->ctx; struct decklink_ctx *ctx = (struct decklink_ctx *)cctx->ctx;
AVCodecContext *c = st->codec; AVCodecParameters *c = st->codecpar;
if (ctx->audio) { if (ctx->audio) {
av_log(avctx, AV_LOG_ERROR, "Only one audio stream is supported!\n"); av_log(avctx, AV_LOG_ERROR, "Only one audio stream is supported!\n");
@ -352,7 +352,7 @@ av_cold int ff_decklink_write_header(AVFormatContext *avctx)
ret = AVERROR(EIO); ret = AVERROR(EIO);
for (n = 0; n < avctx->nb_streams; n++) { for (n = 0; n < avctx->nb_streams; n++) {
AVStream *st = avctx->streams[n]; AVStream *st = avctx->streams[n];
AVCodecContext *c = st->codec; AVCodecParameters *c = st->codecpar;
if (c->codec_type == AVMEDIA_TYPE_AUDIO) { if (c->codec_type == AVMEDIA_TYPE_AUDIO) {
if (decklink_setup_audio(avctx, st)) if (decklink_setup_audio(avctx, st))
goto error; goto error;
@ -380,9 +380,9 @@ int ff_decklink_write_packet(AVFormatContext *avctx, AVPacket *pkt)
ctx->last_pts = FFMAX(ctx->last_pts, pkt->pts); ctx->last_pts = FFMAX(ctx->last_pts, pkt->pts);
if (st->codec->codec_type == AVMEDIA_TYPE_VIDEO) if (st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO)
return decklink_write_video_packet(avctx, pkt); return decklink_write_video_packet(avctx, pkt);
else if (st->codec->codec_type == AVMEDIA_TYPE_AUDIO) else if (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO)
return decklink_write_audio_packet(avctx, pkt); return decklink_write_audio_packet(avctx, pkt);
return AVERROR(EIO); return AVERROR(EIO);