diff options
author | James Almer <jamrial@gmail.com> | 2021-05-02 10:13:38 -0300 |
---|---|---|
committer | James Almer <jamrial@gmail.com> | 2021-05-06 09:44:42 -0300 |
commit | 57aaeff523ec45039c564765673c998ee900d4f9 (patch) | |
tree | 7b14d543e7479f17a95f58384e36b7128aae2a80 /libavformat/dv.c | |
parent | 7539a01bb0ea24998e1aa87706edf9785ddd3ac6 (diff) |
avformat/dv: stop using av_init_packet()
Signed-off-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavformat/dv.c')
-rw-r--r-- | libavformat/dv.c | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/libavformat/dv.c b/libavformat/dv.c index cbb38cbd7d..d7909683c3 100644 --- a/libavformat/dv.c +++ b/libavformat/dv.c @@ -40,12 +40,22 @@ #include "dv.h" #include "libavutil/avassert.h" +// Must be kept in sync with AVPacket +struct DVPacket { + int64_t pts; + uint8_t *data; + int size; + int stream_index; + int flags; + int64_t pos; +}; + struct DVDemuxContext { const AVDVProfile* sys; /* Current DV profile. E.g.: 525/60, 625/50 */ AVFormatContext* fctx; AVStream* vst; AVStream* ast[4]; - AVPacket audio_pkt[4]; + struct DVPacket audio_pkt[4]; uint8_t audio_buf[4][8192]; int ach; int frames; @@ -261,11 +271,12 @@ static int dv_extract_audio_info(DVDemuxContext *c, const uint8_t *frame) c->ast[i]->codecpar->codec_type = AVMEDIA_TYPE_AUDIO; c->ast[i]->codecpar->codec_id = AV_CODEC_ID_PCM_S16LE; - av_init_packet(&c->audio_pkt[i]); c->audio_pkt[i].size = 0; c->audio_pkt[i].data = c->audio_buf[i]; c->audio_pkt[i].stream_index = c->ast[i]->index; c->audio_pkt[i].flags |= AV_PKT_FLAG_KEY; + c->audio_pkt[i].pts = AV_NOPTS_VALUE; + c->audio_pkt[i].pos = -1; } c->ast[i]->codecpar->sample_rate = dv_audio_frequency[freq]; c->ast[i]->codecpar->channels = 2; @@ -358,7 +369,13 @@ int avpriv_dv_get_packet(DVDemuxContext *c, AVPacket *pkt) for (i = 0; i < c->ach; i++) { if (c->ast[i] && c->audio_pkt[i].size) { - *pkt = c->audio_pkt[i]; + pkt->size = c->audio_pkt[i].size; + pkt->data = c->audio_pkt[i].data; + pkt->stream_index = c->audio_pkt[i].stream_index; + pkt->flags = c->audio_pkt[i].flags; + pkt->pts = c->audio_pkt[i].pts; + pkt->pos = c->audio_pkt[i].pos; + c->audio_pkt[i].size = 0; size = pkt->size; break; @@ -404,7 +421,6 @@ int avpriv_dv_produce_packet(DVDemuxContext *c, AVPacket *pkt, /* Now it's time to return video packet */ size = dv_extract_video_info(c, buf); - av_init_packet(pkt); pkt->data = buf; pkt->pos = pos; pkt->size = size; |