- case VLC_CODEC_U8:
- id->psz_enc = "L8";
- id->pf_packetize = rtp_packetize_split;
- rtp_set_ptime (id, 20, 1);
- break;
- case VLC_CODEC_MPGA:
- id->i_payload_type = 14;
- id->psz_enc = "MPA";
- id->i_clock_rate = 90000; /* not 44100 */
- id->pf_packetize = rtp_packetize_mpa;
- break;
- case VLC_CODEC_MPGV:
- id->i_payload_type = 32;
- id->psz_enc = "MPV";
- id->pf_packetize = rtp_packetize_mpv;
- break;
- case VLC_CODEC_ADPCM_G726:
- switch( p_fmt->i_bitrate / 1000 )
- {
- case 16:
- id->psz_enc = "G726-16";
- id->pf_packetize = rtp_packetize_g726_16;
- break;
- case 24:
- id->psz_enc = "G726-24";
- id->pf_packetize = rtp_packetize_g726_24;
- break;
- case 32:
- id->psz_enc = "G726-32";
- id->pf_packetize = rtp_packetize_g726_32;
- break;
- case 40:
- id->psz_enc = "G726-40";
- id->pf_packetize = rtp_packetize_g726_40;
- break;
- }
- break;
- case VLC_CODEC_A52:
- id->psz_enc = "ac3";
- id->pf_packetize = rtp_packetize_ac3;
- break;
- case VLC_CODEC_H263:
- id->psz_enc = "H263-1998";
- id->pf_packetize = rtp_packetize_h263;
- break;
- case VLC_CODEC_H264:
- id->psz_enc = "H264";
- id->pf_packetize = rtp_packetize_h264;
- id->psz_fmtp = NULL;
-
- if( p_fmt->i_extra > 0 )
- {
- uint8_t *p_buffer = p_fmt->p_extra;
- int i_buffer = p_fmt->i_extra;
- char *p_64_sps = NULL;
- char *p_64_pps = NULL;
- char hexa[6+1];
-
- while( i_buffer > 4 &&
- p_buffer[0] == 0 && p_buffer[1] == 0 &&
- p_buffer[2] == 0 && p_buffer[3] == 1 )
- {
- const int i_nal_type = p_buffer[4]&0x1f;
- int i_offset;
- int i_size = 0;
-
- msg_Dbg( p_stream, "we found a startcode for NAL with TYPE:%d", i_nal_type );
-
- i_size = i_buffer;
- for( i_offset = 4; i_offset+3 < i_buffer ; i_offset++)
- {
- if( !memcmp (p_buffer + i_offset, "\x00\x00\x00\x01", 4 ) )
- {
- /* we found another startcode */
- i_size = i_offset;
- break;
- }
- }
- if( i_nal_type == 7 )
- {
- p_64_sps = vlc_b64_encode_binary( &p_buffer[4], i_size - 4 );
- sprintf_hexa( hexa, &p_buffer[5], 3 );
- }
- else if( i_nal_type == 8 )
- {
- p_64_pps = vlc_b64_encode_binary( &p_buffer[4], i_size - 4 );
- }
- i_buffer -= i_size;
- p_buffer += i_size;
- }
- /* */
- if( p_64_sps && p_64_pps &&
- ( asprintf( &id->psz_fmtp,
- "packetization-mode=1;profile-level-id=%s;"
- "sprop-parameter-sets=%s,%s;", hexa, p_64_sps,
- p_64_pps ) == -1 ) )
- id->psz_fmtp = NULL;
- free( p_64_sps );
- free( p_64_pps );
- }
- if( !id->psz_fmtp )
- id->psz_fmtp = strdup( "packetization-mode=1" );
- break;
-
- case VLC_CODEC_MP4V:
- {
- char hexa[2*p_fmt->i_extra +1];
-
- id->psz_enc = "MP4V-ES";
- id->pf_packetize = rtp_packetize_split;
- if( p_fmt->i_extra > 0 )
- {
- sprintf_hexa( hexa, p_fmt->p_extra, p_fmt->i_extra );
- if( asprintf( &id->psz_fmtp,
- "profile-level-id=3; config=%s;", hexa ) == -1 )
- id->psz_fmtp = NULL;
- }
- break;
- }
- case VLC_CODEC_MP4A:
- {
- if(!p_sys->b_latm)
- {
- char hexa[2*p_fmt->i_extra +1];
-
- id->psz_enc = "mpeg4-generic";
- id->pf_packetize = rtp_packetize_mp4a;
- sprintf_hexa( hexa, p_fmt->p_extra, p_fmt->i_extra );
- if( asprintf( &id->psz_fmtp,
- "streamtype=5; profile-level-id=15; "
- "mode=AAC-hbr; config=%s; SizeLength=13; "
- "IndexLength=3; IndexDeltaLength=3; Profile=1;",
- hexa ) == -1 )
- id->psz_fmtp = NULL;
- }
- else
- {
- char hexa[13];
- int i;
- unsigned char config[6];
- unsigned int aacsrates[15] = {
- 96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050,
- 16000, 12000, 11025, 8000, 7350, 0, 0 };
-
- for( i = 0; i < 15; i++ )
- if( p_fmt->audio.i_rate == aacsrates[i] )
- break;
-
- config[0]=0x40;
- config[1]=0;
- config[2]=0x20|i;
- config[3]=p_fmt->audio.i_channels<<4;
- config[4]=0x3f;
- config[5]=0xc0;
-
- id->psz_enc = "MP4A-LATM";
- id->pf_packetize = rtp_packetize_mp4a_latm;
- sprintf_hexa( hexa, config, 6 );
- if( asprintf( &id->psz_fmtp, "profile-level-id=15; "
- "object=2; cpresent=0; config=%s", hexa ) == -1 )
- id->psz_fmtp = NULL;
- }
- break;
- }
- case VLC_CODEC_AMR_NB:
- id->psz_enc = "AMR";
- id->psz_fmtp = strdup( "octet-align=1" );
- id->pf_packetize = rtp_packetize_amr;
- break;
- case VLC_CODEC_AMR_WB:
- id->psz_enc = "AMR-WB";
- id->psz_fmtp = strdup( "octet-align=1" );
- id->pf_packetize = rtp_packetize_amr;
- break;
- case VLC_CODEC_SPEEX:
- id->psz_enc = "SPEEX";
- id->pf_packetize = rtp_packetize_spx;
- break;
- case VLC_CODEC_ITU_T140:
- id->psz_enc = "t140" ;
- id->i_clock_rate = 1000;
- id->pf_packetize = rtp_packetize_t140;
- break;
-