comparison libmpdemux/demux_ts.c @ 20467:67dd5d97176e

reformatted ts_parse() after previous commit
author nicodvb
date Sat, 28 Oct 2006 09:52:19 +0000
parents 367513ea7b12
children 0398b9cbd66d
comparison
equal deleted inserted replaced
20466:a5d299e877b2 20467:67dd5d97176e
2790 int asgn = 0; 2790 int asgn = 0;
2791 uint8_t *lang; 2791 uint8_t *lang;
2792 2792
2793 if(dvdsub_lang) 2793 if(dvdsub_lang)
2794 { 2794 {
2795 if(!strcmp(dvdsub_lang, "")) 2795 if(!strcmp(dvdsub_lang, ""))
2796 asgn = 1; 2796 asgn = 1;
2797 else
2798 {
2799 lang = pid_lang_from_pmt(priv, pid);
2800 if(lang != NULL)
2801 asgn = (strncmp(lang, dvdsub_lang, 3) == 0);
2802 else 2797 else
2803 asgn = 0; 2798 {
2804 } 2799 lang = pid_lang_from_pmt(priv, pid);
2800 if(lang != NULL)
2801 asgn = (strncmp(lang, dvdsub_lang, 3) == 0);
2802 else
2803 asgn = 0;
2804 }
2805 } 2805 }
2806 2806
2807 if(asgn) 2807 if(asgn)
2808 { 2808 {
2809 demuxer->sub->id = tss->pid; 2809 demuxer->sub->id = tss->pid;
2885 2885
2886 if(es->type == UNKNOWN) 2886 if(es->type == UNKNOWN)
2887 return 0; 2887 return 0;
2888 2888
2889 tss->payload_size = es->payload_size; 2889 tss->payload_size = es->payload_size;
2890 tss->type = es->type; 2890 tss->type = es->type;
2891 tss->subtype = es->subtype; 2891 tss->subtype = es->subtype;
2892 2892
2893 if(is_audio) 2893 if(is_audio)
2894 lang = pid_lang_from_pmt(priv, es->pid); 2894 lang = pid_lang_from_pmt(priv, es->pid);
2895 if(lang != NULL) 2895 if(lang != NULL)
2896 { 2896 {
2897 memcpy(es->lang, lang, 3); 2897 memcpy(es->lang, lang, 3);
2898 es->lang[3] = 0; 2898 es->lang[3] = 0;
2899 } 2899 }
2900 else 2900 else
2901 es->lang[0] = 0; 2901 es->lang[0] = 0;
2902 return 1; 2902 return 1;
2903 } 2903 }
2904 else 2904 else
2905 { 2905 {
2906 if(es->pts == 0.0f) 2906 if(es->pts == 0.0f)
2907 es->pts = tss->pts = tss->last_pts; 2907 es->pts = tss->pts = tss->last_pts;
2913 2913
2914 tss->payload_size = es->payload_size; 2914 tss->payload_size = es->payload_size;
2915 2915
2916 demuxer->filepos = stream_tell(demuxer->stream) - es->size; 2916 demuxer->filepos = stream_tell(demuxer->stream) - es->size;
2917 2917
2918 if(*dp_offset + es->size > *buffer_size) 2918 if(*dp_offset + es->size > *buffer_size)
2919 { 2919 {
2920 *buffer_size = *dp_offset + es->size + TS_FEC_PACKET_SIZE; 2920 *buffer_size = *dp_offset + es->size + TS_FEC_PACKET_SIZE;
2921 resize_demux_packet(*dp, *buffer_size); 2921 resize_demux_packet(*dp, *buffer_size);
2922 //we'll skip at least one RESIZE() in the next iteration of ts_parse() 2922 //we'll skip at least one RESIZE() in the next iteration of ts_parse()
2923 mp_msg(MSGT_DEMUX, MSGL_DBG2, "RESIZE DP TO %d\n", *buffer_size); 2923 mp_msg(MSGT_DEMUX, MSGL_DBG2, "RESIZE DP TO %d\n", *buffer_size);
2924 } 2924 }
2925 memcpy(&((*dp)->buffer[*dp_offset]), es->start, es->size); 2925 memcpy(&((*dp)->buffer[*dp_offset]), es->start, es->size);
2926 *dp_offset += es->size; 2926 *dp_offset += es->size;
2927 (*dp)->flags = 0; 2927 (*dp)->flags = 0;
2928 (*dp)->pos = stream_tell(demuxer->stream); 2928 (*dp)->pos = stream_tell(demuxer->stream);
2929 (*dp)->pts = es->pts; 2929 (*dp)->pts = es->pts;
2930 2930
2931 if(*dp_offset >= MAX_PACK_BYTES) 2931 if(*dp_offset >= MAX_PACK_BYTES)
2932 { 2932 {
2933 retv = fill_packet(demuxer, ds, dp, dp_offset, si); 2933 retv = fill_packet(demuxer, ds, dp, dp_offset, si);
2934 return 1; 2934 return 1;