MythTV master
multiplex.h
Go to the documentation of this file.
1/*
2 * multiplex.h
3 *
4 *
5 * Copyright (C) 2003 Marcus Metzler <mocm@metzlerbros.de>
6 * Metzler Brothers Systementwicklung GbR
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License
10 * as published by the Free Software Foundation; either version 2
11 * of the License, or (at your option) any later version.
12 *
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * General Public License for more details.
18 *
19 *
20 * You should have received a copy of the GNU General Public License
21 * along with this program; if not, write to the Free Software
22 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
23 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
24 *
25 */
26#ifndef MULTIPLEX_H
27#define MULTIPLEX_H
28
29#include <array>
30
31#include "mpg_common.h"
32#include "pes.h"
33#include "element.h"
34
35#define N_AUDIO 32
36#define N_AC3 8
37
38using ext_arr = std::array<extdata_t,N_AUDIO>;
39using aok_arr = std::array<bool,N_AUDIO>;
40
42 int fd_out;
43#define REPLEX_MPEG2 0
44#define REPLEX_DVD 1
45#define REPLEX_HDTV 2
46#define REPLEX_TS_SD 3
47#define REPLEX_TS_HD 4
48 int otype;
50 int finish;
51
52 //muxing options
53 uint64_t video_delay;
54 uint64_t audio_delay;
56 unsigned int data_size;
59 uint32_t mux_rate;
60 uint32_t muxr;
61 uint8_t navpack;
62#define TIME_ALWAYS 1
63#define TIME_IFRAME 2
65 int VBR;
66 int is_ts;
70 unsigned int vsize, extsize;
71 int64_t extra_clock;
72 uint64_t SCR;
73 uint64_t oldSCR;
74 uint64_t SCRinc;
76
78
80 int extcnt;
81
86
87 int (*fill_buffers)(void *p, int f);
88 void *priv;
89 int error; /* mythtv#244: added to catch full disk write failures */
90};
91
92void check_times( multiplex_t *mx, int *video_ok, aok_arr &ext_ok, int *start);
93int write_out_packs( multiplex_t *mx, int video_ok, aok_arr &ext_ok);
94int finish_mpg(multiplex_t *mx);
95void init_multiplex( multiplex_t *mx, sequence_t *seq_head,
96 audio_frame_t *extframe, int *exttype, const int *exttypcnt,
97 uint64_t video_delay, uint64_t audio_delay, int fd,
98 int (*fill_buffers)(void *p, int f),
99 ringbuffer *vrbuffer, ringbuffer *index_vrbuffer,
100 ringbuffer *extrbuffer, ringbuffer *index_extrbuffer,
101 int otype);
102
104#endif /* MULTIPLEX_H */
int write_out_packs(multiplex_t *mx, int video_ok, aok_arr &ext_ok)
Definition: multiplex.cpp:600
std::array< extdata_t, N_AUDIO > ext_arr
Definition: multiplex.h:38
void check_times(multiplex_t *mx, int *video_ok, aok_arr &ext_ok, int *start)
Definition: multiplex.cpp:500
void setup_multiplex(multiplex_t *mx)
Definition: multiplex.cpp:865
void init_multiplex(multiplex_t *mx, sequence_t *seq_head, audio_frame_t *extframe, int *exttype, const int *exttypcnt, uint64_t video_delay, uint64_t audio_delay, int fd, int(*fill_buffers)(void *p, int f), ringbuffer *vrbuffer, ringbuffer *index_vrbuffer, ringbuffer *extrbuffer, ringbuffer *index_extrbuffer, int otype)
Definition: multiplex.cpp:705
int finish_mpg(multiplex_t *mx)
Definition: multiplex.cpp:619
std::array< bool, N_AUDIO > aok_arr
Definition: multiplex.h:39
static int fill_buffers(void *r, int finish)
Definition: replex.cpp:1849
ringbuffer * index_vrbuffer
Definition: multiplex.h:85
int(* fill_buffers)(void *p, int f)
Definition: multiplex.h:87
int finish
Definition: multiplex.h:50
uint64_t SCRinc
Definition: multiplex.h:74
int reset_clocks
Definition: multiplex.h:67
ringbuffer * extrbuffer
Definition: multiplex.h:82
uint32_t audio_buffer_size
Definition: multiplex.h:57
int fd_out
Definition: multiplex.h:42
uint64_t video_delay
Definition: multiplex.h:53
unsigned int vsize
Definition: multiplex.h:70
uint32_t video_buffer_size
Definition: multiplex.h:58
int extcnt
Definition: multiplex.h:80
int frame_timestamps
Definition: multiplex.h:64
ringbuffer * index_extrbuffer
Definition: multiplex.h:83
unsigned int data_size
Definition: multiplex.h:56
void * priv
Definition: multiplex.h:88
uint64_t oldSCR
Definition: multiplex.h:73
uint64_t audio_delay
Definition: multiplex.h:54
int64_t extra_clock
Definition: multiplex.h:71
ringbuffer * vrbuffer
Definition: multiplex.h:84
dummy_buffer vdbuf
Definition: multiplex.h:77
uint8_t navpack
Definition: multiplex.h:61
int startup
Definition: multiplex.h:49
index_unit viu
Definition: multiplex.h:75
uint32_t mux_rate
Definition: multiplex.h:59
unsigned int extsize
Definition: multiplex.h:70
int pack_size
Definition: multiplex.h:55
uint32_t muxr
Definition: multiplex.h:60
int write_end_codes
Definition: multiplex.h:68
uint64_t SCR
Definition: multiplex.h:72
int set_broken_link
Definition: multiplex.h:69
ext_arr ext
Definition: multiplex.h:79