diff mbox series

[FFmpeg-devel,04/22] fftools/ffmpeg_demux: move preparing DemuxMsg to separate function

Message ID 20230508091738.20813-4-anton@khirnov.net
State Accepted
Commit abf9532bdad9d62b586b0fb5e4005a9fad2064e5
Headers show
Series [FFmpeg-devel,01/22] fftools/ffmpeg: consolidate InputStream.[next_]dts updates | expand

Checks

Context Check Description
andriy/configure_x86 warning Failed to apply patch

Commit Message

Anton Khirnov May 8, 2023, 9:17 a.m. UTC
Will be useful in following commits, which will move more code into this
function.
---
 fftools/ffmpeg_demux.c | 31 +++++++++++++++++++++++--------
 1 file changed, 23 insertions(+), 8 deletions(-)
diff mbox series

Patch

diff --git a/fftools/ffmpeg_demux.c b/fftools/ffmpeg_demux.c
index 1872e87d57..b16a20a87b 100644
--- a/fftools/ffmpeg_demux.c
+++ b/fftools/ffmpeg_demux.c
@@ -257,6 +257,26 @@  static void ts_fixup(Demuxer *d, AVPacket *pkt, int *repeat_pict)
     SHOW_TS_DEBUG("demuxer+tsfixup");
 }
 
+// process an input packet into a message to send to the consumer thread
+// src is always cleared by this function
+static int input_packet_process(Demuxer *d, DemuxMsg *msg, AVPacket *src)
+{
+    AVPacket *pkt;
+
+    pkt = av_packet_alloc();
+    if (!pkt) {
+        av_packet_unref(src);
+        return AVERROR(ENOMEM);
+    }
+    av_packet_move_ref(pkt, src);
+
+    ts_fixup(d, pkt, &msg->repeat_pict);
+
+    msg->pkt = pkt;
+
+    return 0;
+}
+
 static void thread_set_name(InputFile *f)
 {
     char name[16];
@@ -336,15 +356,10 @@  static void *input_thread(void *arg)
             }
         }
 
-        ts_fixup(d, pkt, &msg.repeat_pict);
-
-        msg.pkt = av_packet_alloc();
-        if (!msg.pkt) {
-            av_packet_unref(pkt);
-            ret = AVERROR(ENOMEM);
+        ret = input_packet_process(d, &msg, pkt);
+        if (ret < 0)
             break;
-        }
-        av_packet_move_ref(msg.pkt, pkt);
+
         ret = av_thread_message_queue_send(d->in_thread_queue, &msg, flags);
         if (flags && ret == AVERROR(EAGAIN)) {
             flags = 0;