Commit a5d42043 authored by Luca Barbato's avatar Luca Barbato

avformat: Always return ref-counted AVPacket

And drop the av_dup_packet from the input_thread.
parent f0ca6ffa
...@@ -2130,7 +2130,6 @@ static void *input_thread(void *arg) ...@@ -2130,7 +2130,6 @@ static void *input_thread(void *arg)
while (!av_fifo_space(f->fifo)) while (!av_fifo_space(f->fifo))
pthread_cond_wait(&f->fifo_cond, &f->fifo_lock); pthread_cond_wait(&f->fifo_cond, &f->fifo_lock);
av_dup_packet(&pkt);
av_fifo_generic_write(f->fifo, &pkt, sizeof(pkt), NULL); av_fifo_generic_write(f->fifo, &pkt, sizeof(pkt), NULL);
pthread_mutex_unlock(&f->fifo_lock); pthread_mutex_unlock(&f->fifo_lock);
......
...@@ -320,10 +320,6 @@ static int packet_queue_put(PacketQueue *q, AVPacket *pkt) ...@@ -320,10 +320,6 @@ static int packet_queue_put(PacketQueue *q, AVPacket *pkt)
{ {
AVPacketList *pkt1; AVPacketList *pkt1;
/* duplicate the packet */
if (pkt != &flush_pkt && av_dup_packet(pkt) < 0)
return -1;
pkt1 = av_malloc(sizeof(AVPacketList)); pkt1 = av_malloc(sizeof(AVPacketList));
if (!pkt1) if (!pkt1)
return -1; return -1;
......
...@@ -413,6 +413,14 @@ int ff_read_packet(AVFormatContext *s, AVPacket *pkt) ...@@ -413,6 +413,14 @@ int ff_read_packet(AVFormatContext *s, AVPacket *pkt)
continue; continue;
} }
if (!pkt->buf) {
AVPacket tmp = { 0 };
ret = av_packet_ref(&tmp, pkt);
if (ret < 0)
return ret;
*pkt = tmp;
}
if ((s->flags & AVFMT_FLAG_DISCARD_CORRUPT) && if ((s->flags & AVFMT_FLAG_DISCARD_CORRUPT) &&
(pkt->flags & AV_PKT_FLAG_CORRUPT)) { (pkt->flags & AV_PKT_FLAG_CORRUPT)) {
av_log(s, AV_LOG_WARNING, av_log(s, AV_LOG_WARNING,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment