Add support for DVB-3DTV. Fix minor issue with AAC.

sdt
Kieran Kunhya 2011-02-19 00:52:25 +00:00
rodzic 882d5742bc
commit 949a7e9b7e
3 zmienionych plików z 12 dodań i 9 usunięć

Wyświetl plik

@ -259,7 +259,7 @@ typedef struct
int64_t video_dts; int64_t video_dts;
//sdt_program_ctx_t *sdt_ctx; //sdt_program_ctx_t *sdt_ctx;
int cablelabs_is_3d; int is_3dtv;
int sb_leak_rate; int sb_leak_rate;
int sb_size; int sb_size;

Wyświetl plik

@ -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->pmt.pid = params->programs[0].pmt_pid;
cur_program->program_num = params->programs[0].program_num; 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_leak_rate = params->programs[0].sb_leak_rate;
cur_program->sb_size = params->programs[0].sb_size; cur_program->sb_size = params->programs[0].sb_size;
cur_program->video_dts = -1; 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 bs_write( s, 5, 0x1f ); // reserved
} }
#endif #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, AVC_DESCRIPTOR_TAG ); // descriptor_tag
bs_write( s, 8, 0x04 ); // descriptor_length 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, 8, stream->mpegvideo_ctx->level & 0xff ); // level_idc
bs_write( s, 1, 0 ); // AVC_still_present bs_write( s, 1, 0 ); // AVC_still_present
bs_write( s, 1, 0 ); // AVC_24_hour_picture_flag 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 ) 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 ) 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 ) if( w->ts_type == TS_TYPE_BLU_RAY )
write_hdmv_video_registration_descriptor( &q, stream ); 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 ) 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 */ /* 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 ); write_mpeg2_aac_descriptor( &q, stream );
else if( w->ts_type == TS_TYPE_DVB ) else if( w->ts_type == TS_TYPE_DVB )
write_aac_descriptor( &q, stream ); write_aac_descriptor( &q, stream );

Wyświetl plik

@ -37,7 +37,7 @@
/**** Stream Formats ****/ /**** Stream Formats ****/
/* Generic */ /* Generic */
#define LIBMPEGTS_VIDEO_MPEG2 1 #define LIBMPEGTS_VIDEO_MPEG2 1
#define LIBMPEGTS_VIDEO_AVC 2 #define LIBMPEGTS_VIDEO_AVC 2
#define LIBMPEGTS_AUDIO_MPEG1 32 #define LIBMPEGTS_AUDIO_MPEG1 32
#define LIBMPEGTS_AUDIO_MPEG2 33 #define LIBMPEGTS_AUDIO_MPEG2 33
@ -268,7 +268,7 @@ typedef struct
int num_streams; int num_streams;
ts_stream_t *streams; ts_stream_t *streams;
int cablelabs_is_3d; int is_3dtv;
int sb_leak_rate; int sb_leak_rate;
int sb_size; 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 ); 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_delete_stream( ts_writer_t *w, int pid );
int ts_close_writer( ts_writer_t *w ); int ts_close_writer( ts_writer_t *w );
/* Examples TODO */ /* Examples TODO */