kopia lustrzana https://github.com/kierank/libmpegts
Add support for DVB-3DTV. Fix minor issue with AAC.
rodzic
882d5742bc
commit
949a7e9b7e
2
common.h
2
common.h
|
@ -259,7 +259,7 @@ typedef struct
|
|||
int64_t video_dts;
|
||||
|
||||
//sdt_program_ctx_t *sdt_ctx;
|
||||
int cablelabs_is_3d;
|
||||
int is_3dtv;
|
||||
|
||||
int sb_leak_rate;
|
||||
int sb_size;
|
||||
|
|
11
libmpegts.c
11
libmpegts.c
|
@ -150,7 +150,7 @@ int ts_setup_transport_stream( ts_writer_t *w, ts_main_t *params )
|
|||
cur_program->pmt.pid = params->programs[0].pmt_pid;
|
||||
cur_program->program_num = params->programs[0].program_num;
|
||||
|
||||
cur_program->cablelabs_is_3d = params->programs[0].cablelabs_is_3d;
|
||||
cur_program->is_3dtv = params->programs[0].is_3dtv;
|
||||
cur_program->sb_leak_rate = params->programs[0].sb_leak_rate;
|
||||
cur_program->sb_size = params->programs[0].sb_size;
|
||||
cur_program->video_dts = -1;
|
||||
|
@ -1088,7 +1088,7 @@ static void write_video_stream_descriptor( bs_t *s, ts_int_stream_t *stream )
|
|||
bs_write( s, 5, 0x1f ); // reserved
|
||||
}
|
||||
#endif
|
||||
static void write_avc_descriptor( bs_t *s, ts_int_stream_t *stream )
|
||||
static void write_avc_descriptor( bs_t *s, ts_int_program_t *program, ts_int_stream_t *stream )
|
||||
{
|
||||
bs_write( s, 8, AVC_DESCRIPTOR_TAG ); // descriptor_tag
|
||||
bs_write( s, 8, 0x04 ); // descriptor_length
|
||||
|
@ -1113,7 +1113,8 @@ static void write_avc_descriptor( bs_t *s, ts_int_stream_t *stream )
|
|||
bs_write( s, 8, stream->mpegvideo_ctx->level & 0xff ); // level_idc
|
||||
bs_write( s, 1, 0 ); // AVC_still_present
|
||||
bs_write( s, 1, 0 ); // AVC_24_hour_picture_flag
|
||||
bs_write( s, 6, 0x3f ); // reserved
|
||||
bs_write( s, 1, !program->is_3dtv ); // Frame_Packing_SEI_not_present_flag
|
||||
bs_write( s, 5, 0x1f ); // reserved
|
||||
}
|
||||
|
||||
static void write_data_stream_alignment_descriptor( bs_t *s )
|
||||
|
@ -1499,7 +1500,7 @@ static int write_pmt( ts_writer_t *w, ts_int_program_t *program )
|
|||
}
|
||||
else if( stream->stream_format == LIBMPEGTS_VIDEO_AVC )
|
||||
{
|
||||
write_avc_descriptor( &q, stream );
|
||||
write_avc_descriptor( &q, program, stream );
|
||||
if( w->ts_type == TS_TYPE_BLU_RAY )
|
||||
write_hdmv_video_registration_descriptor( &q, stream );
|
||||
}
|
||||
|
@ -1511,7 +1512,7 @@ static int write_pmt( ts_writer_t *w, ts_int_program_t *program )
|
|||
else if( stream->stream_format == LIBMPEGTS_AUDIO_ADTS || stream->stream_format == LIBMPEGTS_AUDIO_LATM )
|
||||
{
|
||||
/* strictly speaking in DVB only LATM is allowed for MPEG-4 AAC audio. ADTS is commonly used however */
|
||||
if( stream->aac_is_mpeg4 )
|
||||
if( !stream->aac_is_mpeg4 )
|
||||
write_mpeg2_aac_descriptor( &q, stream );
|
||||
else if( w->ts_type == TS_TYPE_DVB )
|
||||
write_aac_descriptor( &q, stream );
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
/**** Stream Formats ****/
|
||||
/* Generic */
|
||||
#define LIBMPEGTS_VIDEO_MPEG2 1
|
||||
#define LIBMPEGTS_VIDEO_AVC 2
|
||||
#define LIBMPEGTS_VIDEO_AVC 2
|
||||
|
||||
#define LIBMPEGTS_AUDIO_MPEG1 32
|
||||
#define LIBMPEGTS_AUDIO_MPEG2 33
|
||||
|
@ -268,7 +268,7 @@ typedef struct
|
|||
int num_streams;
|
||||
ts_stream_t *streams;
|
||||
|
||||
int cablelabs_is_3d;
|
||||
int is_3dtv;
|
||||
|
||||
int sb_leak_rate;
|
||||
int sb_size;
|
||||
|
@ -602,11 +602,13 @@ typedef struct
|
|||
|
||||
int ts_write_frames( ts_writer_t *w, ts_frame_t *frames, int num_frames, uint8_t **out, int *len );
|
||||
|
||||
/*
|
||||
/* INACTIVE
|
||||
*
|
||||
* */
|
||||
int ts_delete_stream( ts_writer_t *w, int pid );
|
||||
|
||||
|
||||
|
||||
int ts_close_writer( ts_writer_t *w );
|
||||
|
||||
/* Examples TODO */
|
||||
|
|
Ładowanie…
Reference in New Issue