comparison rtpenc.c @ 6349:93c7a56fa912 libavformat

Add RTP packetization of Theora and Vorbis Patch by Josh Allmann, joshua dot allmann at gmail
author mstorsjo
date Sat, 07 Aug 2010 11:16:07 +0000
parents 956f2e2cd288
children 0bcd6a8bc5d5
comparison
equal deleted inserted replaced
6348:c709176da1ad 6349:93c7a56fa912
51 case CODEC_ID_PCM_U16LE: 51 case CODEC_ID_PCM_U16LE:
52 case CODEC_ID_PCM_U8: 52 case CODEC_ID_PCM_U8:
53 case CODEC_ID_MPEG2TS: 53 case CODEC_ID_MPEG2TS:
54 case CODEC_ID_AMR_NB: 54 case CODEC_ID_AMR_NB:
55 case CODEC_ID_AMR_WB: 55 case CODEC_ID_AMR_WB:
56 case CODEC_ID_VORBIS:
57 case CODEC_ID_THEORA:
56 return 1; 58 return 1;
57 default: 59 default:
58 return 0; 60 return 0;
59 } 61 }
60 } 62 }
133 /* check for H.264 MP4 syntax */ 135 /* check for H.264 MP4 syntax */
134 if (st->codec->extradata_size > 4 && st->codec->extradata[0] == 1) { 136 if (st->codec->extradata_size > 4 && st->codec->extradata[0] == 1) {
135 s->nal_length_size = (st->codec->extradata[4] & 0x03) + 1; 137 s->nal_length_size = (st->codec->extradata[4] & 0x03) + 1;
136 } 138 }
137 break; 139 break;
140 case CODEC_ID_VORBIS:
141 case CODEC_ID_THEORA:
142 if (!s->max_frames_per_packet) s->max_frames_per_packet = 15;
143 s->max_frames_per_packet = av_clip(s->max_frames_per_packet, 1, 15);
144 s->max_payload_size -= 6; // ident+frag+tdt/vdt+pkt_num+pkt_length
145 s->num_frames = 0;
146 goto defaultcase;
138 case CODEC_ID_AMR_NB: 147 case CODEC_ID_AMR_NB:
139 case CODEC_ID_AMR_WB: 148 case CODEC_ID_AMR_WB:
140 if (!s->max_frames_per_packet) 149 if (!s->max_frames_per_packet)
141 s->max_frames_per_packet = 12; 150 s->max_frames_per_packet = 12;
142 if (st->codec->codec_id == CODEC_ID_AMR_NB) 151 if (st->codec->codec_id == CODEC_ID_AMR_NB)
153 return -1; 162 return -1;
154 } 163 }
155 case CODEC_ID_AAC: 164 case CODEC_ID_AAC:
156 s->num_frames = 0; 165 s->num_frames = 0;
157 default: 166 default:
167 defaultcase:
158 if (st->codec->codec_type == AVMEDIA_TYPE_AUDIO) { 168 if (st->codec->codec_type == AVMEDIA_TYPE_AUDIO) {
159 av_set_pts_info(st, 32, 1, st->codec->sample_rate); 169 av_set_pts_info(st, 32, 1, st->codec->sample_rate);
160 } 170 }
161 s->buf_ptr = s->buf; 171 s->buf_ptr = s->buf;
162 break; 172 break;
391 break; 401 break;
392 case CODEC_ID_H263: 402 case CODEC_ID_H263:
393 case CODEC_ID_H263P: 403 case CODEC_ID_H263P:
394 ff_rtp_send_h263(s1, pkt->data, size); 404 ff_rtp_send_h263(s1, pkt->data, size);
395 break; 405 break;
406 case CODEC_ID_VORBIS:
407 case CODEC_ID_THEORA:
408 ff_rtp_send_xiph(s1, pkt->data, size);
409 break;
396 default: 410 default:
397 /* better than nothing : send the codec raw data */ 411 /* better than nothing : send the codec raw data */
398 rtp_send_raw(s1, pkt->data, size); 412 rtp_send_raw(s1, pkt->data, size);
399 break; 413 break;
400 } 414 }