diff options
| author | phintuka <phintuka> | 2011-08-01 12:39:58 +0000 |
|---|---|---|
| committer | phintuka <phintuka> | 2011-08-01 12:39:58 +0000 |
| commit | c4115f890f0b357ebc9b8bf30525b1d425d5d4e4 (patch) | |
| tree | b1cd2e669212b0346d17150eaac48852dfc36a89 | |
| parent | ab3e5c8602f52d8b5a0d0335511ee3e016e755a2 (diff) | |
| download | xineliboutput-c4115f890f0b357ebc9b8bf30525b1d425d5d4e4.tar.gz xineliboutput-c4115f890f0b357ebc9b8bf30525b1d425d5d4e4.tar.bz2 | |
Factorized known audio pid search code
| -rw-r--r-- | xine/BluRay/demux_ts.c | 56 |
1 files changed, 14 insertions, 42 deletions
diff --git a/xine/BluRay/demux_ts.c b/xine/BluRay/demux_ts.c index 7fe0d965..05d13b1b 100644 --- a/xine/BluRay/demux_ts.c +++ b/xine/BluRay/demux_ts.c @@ -1203,6 +1203,15 @@ static inline int ts_payloadsize(unsigned char * tsp) return 184; } +/* check if an apid is in the list of known apids */ +static int apid_check(demux_ts_t*this, unsigned int pid) { + int i; + for (i = 0; i < this->audio_tracks_count; i++) { + if (this->audio_tracks[i].pid == pid) + return i; + } + return -1; +} /* * NAME demux_ts_parse_pmt @@ -1452,14 +1461,7 @@ printf("Program Number is %i, looking for %i\n",program_number,this->program_num case ISO_13818_PART7_AUDIO: case ISO_14496_PART3_AUDIO: if (this->audio_tracks_count < MAX_AUDIO_TRACKS) { - int i, found = 0; - for(i = 0; i < this->audio_tracks_count; i++) { - if(this->audio_tracks[i].pid == pid) { - found = 1; - break; - } - } - if(!found) { + if (apid_check(this, pid) < 0) { #ifdef TS_PMT_LOG printf ("demux_ts: PMT audio pid 0x%.4x type %2.2x\n", pid, stream[0]); #endif @@ -1491,14 +1493,7 @@ printf("Program Number is %i, looking for %i\n",program_number,this->program_num case ISO_13818_PES_PRIVATE: for (i = 5; i < coded_length; i += stream[i+1] + 2) { if ((stream[i] == 0x6a) && (this->audio_tracks_count < MAX_AUDIO_TRACKS)) { - int i, found = 0; - for(i = 0; i < this->audio_tracks_count; i++) { - if(this->audio_tracks[i].pid == pid) { - found = 1; - break; - } - } - if(!found) { + if (apid_check(this, pid) < 0) { #ifdef TS_PMT_LOG printf ("demux_ts: PMT AC3 audio pid 0x%.4x type %2.2x\n", pid, stream[0]); #endif @@ -1614,14 +1609,7 @@ printf("Program Number is %i, looking for %i\n",program_number,this->program_num * FIXME: This will need expanding if we ever see a DTS or other media format here. */ if ((this->audio_tracks_count < MAX_AUDIO_TRACKS) && (stream[0] >= 0x80) ) { - int i, found = 0; - for(i = 0; i < this->audio_tracks_count; i++) { - if(this->audio_tracks[i].pid == pid) { - found = 1; - break; - } - } - if(!found) { + if (apid_check(this,pid) < 0) { uint32_t format_identifier=0; demux_ts_get_reg_desc(this, &format_identifier, stream + 5, stream_info_length); @@ -1915,16 +1903,6 @@ static int64_t demux_ts_adaptation_field_parse(uint8_t *data, } #endif -/* check if an apid is in the list of known apids */ -static int apid_check(demux_ts_t*this, unsigned int pid) { - int i; - for(i=0; i<this->audio_tracks_count; i++) { - if(this->audio_tracks[i].pid == pid) - return i; - } - return -1; -} - /* transport stream packet layer */ static void demux_ts_parse_packet (demux_ts_t*this) { @@ -2086,14 +2064,8 @@ static void demux_ts_parse_packet (demux_ts_t*this) { } } else if ( (pes_stream_id >= AUDIO_STREAM_S) && (pes_stream_id <= AUDIO_STREAM_E) ) { if (this->audio_tracks_count < MAX_AUDIO_TRACKS) { - int i, found = 0; - for(i = 0; i < this->audio_tracks_count; i++) { - if(this->audio_tracks[i].pid == pid) { - found = 1; - break; - } - } - if(!found) { + + if (apid_check(this, pid) < 0) { #ifdef TS_PMT_LOG xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG, "demux_ts: auto-detected audio pid 0x%.4x\n", pid); |
