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:
parent
6d856b2579
commit
e0eb0bdab9
@ -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);
|
||||||
|
Loading…
Reference in New Issue
Block a user