summaryrefslogtreecommitdiff
path: root/libavformat
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2021-09-06 19:48:54 +0200
committerPaul B Mahol <onemda@gmail.com>2021-09-12 22:23:35 +0200
commitd1971d69c749bce315788376c94f9464860f115f (patch)
tree5cec4c5fcf84c892c1948fc49abaa42b4accd27f /libavformat
parent6803d8b4403ecea18fc288475b4d7cdedd0fb744 (diff)
avformat/dv: always set audio packet duration
If audio packet is present in DV stream it have duration of 1 in DV timebase units.
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/dv.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/libavformat/dv.c b/libavformat/dv.c
index d7909683c3..b2b74162df 100644
--- a/libavformat/dv.c
+++ b/libavformat/dv.c
@@ -48,6 +48,7 @@ struct DVPacket {
int stream_index;
int flags;
int64_t pos;
+ int64_t duration;
};
struct DVDemuxContext {
@@ -276,6 +277,7 @@ static int dv_extract_audio_info(DVDemuxContext *c, const uint8_t *frame)
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].duration = 0;
c->audio_pkt[i].pos = -1;
}
c->ast[i]->codecpar->sample_rate = dv_audio_frequency[freq];
@@ -374,6 +376,7 @@ int avpriv_dv_get_packet(DVDemuxContext *c, AVPacket *pkt)
pkt->stream_index = c->audio_pkt[i].stream_index;
pkt->flags = c->audio_pkt[i].flags;
pkt->pts = c->audio_pkt[i].pts;
+ pkt->duration = c->audio_pkt[i].duration;
pkt->pos = c->audio_pkt[i].pos;
c->audio_pkt[i].size = 0;
@@ -404,6 +407,7 @@ int avpriv_dv_produce_packet(DVDemuxContext *c, AVPacket *pkt,
c->audio_pkt[i].pos = pos;
c->audio_pkt[i].size = size;
c->audio_pkt[i].pts = (c->sys->height == 720) ? (c->frames & ~1) : c->frames;
+ c->audio_pkt[i].duration = 1;
ppcm[i] = c->audio_buf[i];
}
if (c->ach)