diff --git a/mux.c b/mux.c deleted file mode 100644 index bda4e318..00000000 --- a/mux.c +++ /dev/null @@ -1,183 +0,0 @@ -/* - * tvheadend, Muxing - * Copyright (C) 2007 Andreas Öman - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include -#include -#include -#include -#include -#include - -#include "tvhead.h" -#include "transports.h" -#include "subscriptions.h" -#include "psi.h" -#include "buffer.h" -#include "mux.h" - -/** - * pause playback - */ -void -muxer_pause(th_muxer_t *tm) -{ -} - - - - -/* - * playback start - */ -void -muxer_play(th_muxer_t *tm, int64_t toffset) -{ - th_transport_t *t = tm->tm_transport; - - transport_link_muxer(t, tm); - - if(toffset == AV_NOPTS_VALUE) { - /* continue from last playback */ - tm->tm_offset = 0; - } else { - tm->tm_offset = toffset; - } - tm->tm_status = TM_PLAY; -} - -/** - * - */ -static void -mux_new_packet_for_stream(th_muxer_t *tm, th_muxstream_t *tms, th_pkt_t *pkt) -{ - if(tm->tm_offset == 0) { - /* Direct playback, pass it on at once */ - tm->tm_output(tm->tm_opaque, tms, pkt); - return; - } -} - - - -/** - * - */ -static void -mux_new_packet(th_muxer_t *tm, th_stream_t *st, th_pkt_t *pkt) -{ - th_muxstream_t *tms; - - pkt_store(st, pkt); /* need to keep packet around */ - - switch(tm->tm_status) { - case TM_IDLE: - break; - - case TM_WAITING_FOR_LOCK: - break; - - case TM_PLAY: - LIST_FOREACH(tms, &tm->tm_streams, tms_muxer_link0) { - if(tms->tms_stream == st) { - mux_new_packet_for_stream(tm, tms, pkt); - break; - } - } - break; - - case TM_PAUSE: - break; - } -} - - - - - -/* - * TS Muxer - */ -th_muxer_t * -muxer_create(th_transport_t *t, th_mux_output_t *cb, void *opaque) -{ - th_stream_t *st; - th_muxer_t *tm; - th_muxstream_t *tms; - - tm = calloc(1, sizeof(th_muxer_t)); - tm->tm_transport = t; - - tm->tm_output = cb; - tm->tm_opaque = opaque; - tm->tm_new_pkt = mux_new_packet; - - - LIST_FOREACH(st, &t->tht_streams, st_link) { - - switch(st->st_type) { - case HTSTV_MPEG2VIDEO: - case HTSTV_MPEG2AUDIO: - case HTSTV_AC3: - case HTSTV_H264: - break; - - default: - continue; - } - - tms = calloc(1, sizeof(th_muxstream_t)); - tms->tms_muxer = tm; - tms->tms_stream = st; - - - LIST_INSERT_HEAD(&tm->tm_streams, tms, tms_muxer_link0); - } - return tm; -} - - -/* - * - */ -static void -tms_destroy(th_muxstream_t *tms) -{ - LIST_REMOVE(tms, tms_muxer_link0); - - // dtimer_disarm(&tms->tms_timer); - free(tms); -} - - -/** - * - */ -void -muxer_destroy(th_muxer_t *tm) -{ - th_muxstream_t *tms; - - transport_unlink_muxer(tm); - - while((tms = LIST_FIRST(&tm->tm_streams)) != NULL) - tms_destroy(tms); - - free(tm); -} - diff --git a/mux.h b/mux.h deleted file mode 100644 index 77018c5b..00000000 --- a/mux.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * tvheadend, Stream muxer - * Copyright (C) 2007 Andreas Öman - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#ifndef MUX_H -#define MUX_H - -th_muxer_t *muxer_create(th_transport_t *t, th_mux_output_t *cb, void *opaque); - -void muxer_destroy(th_muxer_t *tm); - -void muxer_play(th_muxer_t *tm, int64_t toffset); - -void muxer_pause(th_muxer_t *tm); - -#endif /* MUX_H */ diff --git a/parsers.c b/parsers.c index 22ee392c..a99cd9d6 100644 --- a/parsers.c +++ b/parsers.c @@ -106,7 +106,7 @@ parse_raw_mpeg(th_transport_t *t, th_stream_t *st, uint8_t *data, { th_subscription_t *s; - if(LIST_FIRST(&t->tht_muxers) == NULL) { + if(LIST_FIRST(&t->tht_streaming_pad.sp_targets) == NULL) { /* No muxers. However, subscriptions may force demultiplex for other reasons (serviceprobe does this) */ LIST_FOREACH(s, &t->tht_subscriptions, ths_transport_link) diff --git a/transports.c b/transports.c index 71f34cce..b5dd4f41 100644 --- a/transports.c +++ b/transports.c @@ -81,7 +81,7 @@ transport_stop(th_transport_t *t) t->tht_tt_commercial_advice = COMMERCIAL_UNKNOWN; - assert(LIST_FIRST(&t->tht_muxers) == NULL); + assert(LIST_FIRST(&t->tht_streaming_pad.sp_targets) == NULL); assert(LIST_FIRST(&t->tht_subscriptions) == NULL); /** diff --git a/tvhead.h b/tvhead.h index e3ddd603..d1a06ed4 100644 --- a/tvhead.h +++ b/tvhead.h @@ -678,14 +678,6 @@ typedef struct th_transport { int tht_scrambled; int tht_caid; - /** - * List of muxers - * - * The parsing code will invoke each of these whene complete - * packets have been assembled. - */ - struct th_muxer_list tht_muxers; - /** * Used by parsing code to normalize timestamp to zero */ @@ -813,63 +805,6 @@ typedef struct th_muxstream { } th_muxstream_t; -/* - * - */ - - -typedef void (th_mux_newpkt_t)(struct th_muxer *tm, th_stream_t *st, - th_pkt_t *pkt); - -typedef struct th_muxer { - - th_mux_newpkt_t *tm_new_pkt; - - LIST_ENTRY(th_muxer) tm_transport_link; - th_transport_t *tm_transport; - - int64_t tm_offset; - - struct th_muxstream_list tm_streams; - - th_mux_output_t *tm_output; - void *tm_opaque; - - - enum { - TM_IDLE, - TM_WAITING_FOR_LOCK, - TM_PLAY, - TM_PAUSE, - } tm_status; - -} th_muxer_t; - - -/** - * Output muxer for usage via ffmpeg (avformat) - */ -typedef struct th_ffmuxer { - th_muxer_t tffm_muxer; - - enum { - TFFM_STOP, - TFFM_WAIT_SUBSCRIPTION, - TFFM_WAIT_FOR_START, - TFFM_WAIT_AUDIO_LOCK, - TFFM_WAIT_VIDEO_LOCK, - TFFM_RUNNING, - TFFM_COMMERCIAL, - - } tffm_state; - - int tffm_header_written; - - char *tffm_printname; - - struct AVFormatContext *tffm_avfctx; -} th_ffmuxer_t; - #endif