]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
send the packet type to muxer along with the actual packet so we can check if the...
authorJohn Törnblom <john.tornblom@gmail.com>
Wed, 24 Oct 2012 13:25:43 +0000 (15:25 +0200)
committerJohn Törnblom <john.tornblom@gmail.com>
Wed, 24 Oct 2012 13:25:43 +0000 (15:25 +0200)
src/dvr/dvr_rec.c
src/muxer.c
src/muxer.h
src/muxer_pass.c
src/muxer_tvh.c
src/webui/webui.c

index cf8319e0b5bac80661bcaaefa01fa06c43cd1dca..ee0d906b128247e344113329f760c194626e2eb4 100755 (executable)
@@ -445,7 +445,7 @@ dvr_thread(void *aux)
       if(dispatch_clock > de->de_start - (60 * de->de_start_extra)) {
        dvr_rec_set_state(de, DVR_RS_RUNNING, 0);
 
-       muxer_write_pkt(de->de_mux, sm->sm_data);
+       muxer_write_pkt(de->de_mux, sm->sm_type, sm->sm_data);
        sm->sm_data = NULL;
       }
       break;
index cd3071fe51cc3a29f0c09b2d58b6501b39ca29e4..2afdf08aa00be5d9557869709537445fe1954b6e 100644 (file)
@@ -308,12 +308,12 @@ muxer_write_meta(muxer_t *m, struct epg_broadcast *eb)
  * sanity wrapper arround m_write_pkt()
  */
 int
-muxer_write_pkt(muxer_t *m, void *data)
+muxer_write_pkt(muxer_t *m, streaming_message_type_t smt, void *data)
 {
   if(!m || !data)
     return -1;
 
-  return m->m_write_pkt(m, data);
+  return m->m_write_pkt(m, smt, data);
 }
 
 
index 6fdeb91898a1afa9892d3954eb0aa5d5a62fb692..f6bf2116b5b4ff40b43d9707222d5f75bcb083d5 100644 (file)
@@ -47,7 +47,9 @@ typedef struct muxer {
   int         (*m_close)      (struct muxer *);                         // Close the muxer
   void        (*m_destroy)    (struct muxer *);                         // Free the memory
   int         (*m_write_meta) (struct muxer *, struct epg_broadcast *); // Append epg data
-  int         (*m_write_pkt)  (struct muxer *, void *);                 // Append a media packet
+  int         (*m_write_pkt)  (struct muxer *,                          // Append a media packet
+                              streaming_message_type_t,
+                              void *);
 
   int                    m_errors;     // Number of errors
   muxer_container_type_t m_container;  // The type of the container
@@ -71,7 +73,7 @@ int         muxer_reconfigure (muxer_t *m, const struct streaming_start *ss);
 int         muxer_close       (muxer_t *m);
 int         muxer_destroy     (muxer_t *m);
 int         muxer_write_meta  (muxer_t *m, struct epg_broadcast *eb);
-int         muxer_write_pkt   (muxer_t *m, void *data);
+int         muxer_write_pkt   (muxer_t *m, streaming_message_type_t smt, void *data);
 const char* muxer_mime        (muxer_t *m, const struct streaming_start *ss);
 const char* muxer_suffix      (muxer_t *m, const struct streaming_start *ss);
 
index b61aa4007003dd60a66b96bbf854e17afd5a45e8..2a1804e3ee5142913ad08b6f15a500ba99102299 100644 (file)
@@ -19,6 +19,7 @@
 #include <string.h>
 #include <unistd.h>
 #include <fcntl.h>
+#include <assert.h>
 
 #include "tvheadend.h"
 #include "streaming.h"
@@ -227,17 +228,19 @@ pass_muxer_write_ts(muxer_t *m, pktbuf_t *pb)
  * Write a packet directly to the file descriptor
  */
 static int
-pass_muxer_write_pkt(muxer_t *m, void *data)
+pass_muxer_write_pkt(muxer_t *m, streaming_message_type_t smt, void *data)
 {
   pktbuf_t *pb = (pktbuf_t*)data;
   pass_muxer_t *pm = (pass_muxer_t*)m;
 
-  switch(pm->m_container) {
-  case MC_MPEGTS:
+  assert(smt == SMT_MPEGTS);
+
+  switch(smt) {
+  case SMT_MPEGTS:
     pass_muxer_write_ts(m, pb);
     break;
   default:
-    //NOP
+    //TODO: add support for v4l (MPEG-PS)
     break;
   }
 
index 6d5a0de178508a75378bcf26e8c6bfa328d7d338..dd335145f4c39eb67afce3b73b185ca2954b1a08 100644 (file)
@@ -16,6 +16,8 @@
  *  along with this program.  If not, see <htmlui://www.gnu.org/licenses/>.
  */
 
+#include <assert.h>
+
 #include "tvheadend.h"
 #include "streaming.h"
 #include "epg.h"
@@ -132,11 +134,13 @@ tvh_muxer_open_file(muxer_t *m, const char *filename)
  * Write a packet to the muxer
  */
 static int
-tvh_muxer_write_pkt(muxer_t *m, void *data)
+tvh_muxer_write_pkt(muxer_t *m, streaming_message_type_t smt, void *data)
 {
   th_pkt_t *pkt = (th_pkt_t*)data;
   tvh_muxer_t *tm = (tvh_muxer_t*)m;
 
+  assert(smt == SMT_PACKET);
+
   if(mk_mux_write_pkt(tm->tm_ref, pkt)) {
     tm->m_errors++;
     return -1;
index e404d858862fe096dcf7393239ec1b8c612833ec..e00b517f805663d6694bf254fd86fda01e583f27 100644 (file)
@@ -199,7 +199,7 @@ http_stream_run(http_connection_t *hc, streaming_queue_t *sq,
     switch(sm->sm_type) {
     case SMT_MPEGTS:
     case SMT_PACKET:
-      muxer_write_pkt(mux, sm->sm_data);
+      muxer_write_pkt(mux, sm->sm_type, sm->sm_data);
       sm->sm_data = NULL;
       break;