Attempt to improve 302M some more

pull/7/head
Kieran Kunhya 2014-11-29 23:05:51 +00:00
rodzic 3703d0986b
commit 31eccd1589
2 zmienionych plików z 4 dodań i 33 usunięć

Wyświetl plik

@ -1060,7 +1060,7 @@ int ts_setup_transport_stream( ts_writer_t *w, ts_main_t *params )
cur_stream->mb.buf_size = w->ts_type == TS_TYPE_ATSC || w->ts_type == TS_TYPE_CABLELABS ? AC3_BS_ATSC : AC3_BS_DVB;
}
else if( cur_stream->stream_format == LIBMPEGTS_AUDIO_302M )
cur_stream->mb.buf_size = (1 << 16) - 512;
cur_stream->mb.buf_size = SMPTE_302M_AUDIO_BS;
cur_program->streams[cur_program->num_streams] = cur_stream;
cur_program->num_streams++;
@ -1320,38 +1320,6 @@ int ts_setup_mpeg4_aac_stream( ts_writer_t *w, int pid, int profile_and_level, i
return 0;
};
int ts_setup_302m_stream( ts_writer_t *w, int pid, int bit_depth, int num_channels )
{
if( w->ts_type == TS_TYPE_BLU_RAY )
{
fprintf( stderr, "SMPTE 302M not allowed in Blu-Ray\n" );
return -1;
}
else if( !(bit_depth == 16 || bit_depth == 20 || bit_depth == 24) )
{
fprintf( stderr, "Invalid Bit Depth for SMPTE 302M\n" );
return -1;
}
else if( (num_channels & 1) || num_channels <= 0 || num_channels > 8 )
{
fprintf( stderr, "Invalid number of channels for SMPTE 302M\n" );
return -1;
}
ts_int_stream_t *stream = find_stream( w, pid );
if( !stream )
{
fprintf( stderr, "Invalid PID\n" );
return -1;
}
stream->mb.buf_size = SMPTE_302M_AUDIO_BS;
stream->rx = 1.2 * 6 * SMPTE_302M_AUDIO_SR * 8;
return 0;
}
int ts_setup_opus_stream( ts_writer_t *w, int pid, int channel_map )
{
ts_int_stream_t *stream = find_stream( w, pid );
@ -1649,6 +1617,8 @@ int ts_write_frames( ts_writer_t *w, ts_frame_t *frames, int num_frames, uint8_t
new_pes[i]->write_pulldown_info = frames[i].write_pulldown_info;
new_pes[i]->pic_struct = frames[i].pic_struct;
}
else if( stream->stream_format == LIBMPEGTS_AUDIO_302M )
new_pes[i]->initial_arrival_time = (new_pes[i]->dts * 300) - frames[i].duration;
else if( stream->stream_format == LIBMPEGTS_DVB_TELETEXT )
new_pes[i]->initial_arrival_time = (new_pes[i]->dts - 3600) * 300; /* Teletext is special because data can only stay in the buffer for 40ms */
else if( stream->stream_format == LIBMPEGTS_DVB_SUB )

Wyświetl plik

@ -666,6 +666,7 @@ typedef struct
int64_t cpb_final_arrival_time;
int64_t dts;
int64_t pts;
int64_t duration /* SMPTE 302M only */
int random_access;
int priority;