]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
transcoder: fixed memory leak of pkt headers
authorJohn Törnblom <john.tornblom@gmail.com>
Sat, 2 Nov 2013 15:02:34 +0000 (16:02 +0100)
committerJohn Törnblom <john.tornblom@gmail.com>
Tue, 12 Nov 2013 18:45:11 +0000 (19:45 +0100)
src/plumbing/transcoding.c

index e0e2117b670be0db9fe4bf392376502f079ca447..b1a1ee75fc043d2b5e6372adea81e35803eede84 100644 (file)
@@ -188,6 +188,7 @@ transcoder_stream_packet(transcoder_stream_t *ts, th_pkt_t *pkt)
 
   sm = streaming_msg_create_pkt(pkt);
   streaming_target_deliver2(ts->ts_target, sm);
+  pkt_ref_dec(pkt);
 }
 
 
@@ -243,6 +244,7 @@ transcoder_stream_subtitle(transcoder_stream_t *ts, th_pkt_t *pkt)
 
  cleanup:
   av_free_packet(&packet);
+  pkt_ref_dec(pkt);
   avsubtitle_free(&sub);
 }
 
@@ -445,6 +447,7 @@ transcoder_stream_audio(transcoder_stream_t *ts, th_pkt_t *pkt)
 
  cleanup:
   av_free_packet(&packet);
+  pkt_ref_dec(pkt);
 }
 
 
@@ -724,6 +727,7 @@ transcoder_stream_video(transcoder_stream_t *ts, th_pkt_t *pkt)
 
  cleanup:
   av_free_packet(&packet);
+  pkt_ref_dec(pkt);
 
   if(buf)
     av_free(buf);
@@ -752,8 +756,10 @@ transcoder_packet(transcoder_t *t, th_pkt_t *pkt)
       continue;
 
     ts->ts_handle_pkt(ts, pkt);
-    break;
+    return;
   }
+
+  pkt_ref_dec(pkt);
 }
 
 
@@ -1247,15 +1253,12 @@ transcoder_input(void *opaque, streaming_message_t *sm)
 {
   transcoder_t *t;
   streaming_start_t *ss;
-  th_pkt_t *pkt;
 
   t = opaque;
 
   switch (sm->sm_type) {
   case SMT_PACKET:
-    pkt = sm->sm_data;
-    transcoder_packet(t, pkt);
-    pkt_ref_dec(pkt);
+    transcoder_packet(t, sm->sm_data);
     break;
 
   case SMT_START: