[Ffmpeg-cvslog] CVS: ffmpeg/libavformat movenc.c,1.66,1.67
Baptiste Coudurier CVS
bcoudurier
Fri Apr 14 12:51:36 CEST 2006
Update of /cvsroot/ffmpeg/ffmpeg/libavformat
In directory mail:/var2/tmp/cvs-serv6059/libavformat
Modified Files:
movenc.c
Log Message:
clean and simplify mov_write_packet
Index: movenc.c
===================================================================
RCS file: /cvsroot/ffmpeg/ffmpeg/libavformat/movenc.c,v
retrieving revision 1.66
retrieving revision 1.67
diff -u -d -r1.66 -r1.67
--- movenc.c 14 Apr 2006 09:54:17 -0000 1.66
+++ movenc.c 14 Apr 2006 10:51:32 -0000 1.67
@@ -1641,55 +1641,47 @@
if (url_is_streamed(&s->pb)) return 0; /* Can't handle that */
if (!size) return 0; /* Discard 0 sized packets */
- if (enc->codec_type == CODEC_TYPE_VIDEO ) {
- samplesInChunk = 1;
- }
- else if (enc->codec_type == CODEC_TYPE_AUDIO ) {
- if( enc->codec_id == CODEC_ID_AMR_NB) {
- /* We must find out how many AMR blocks there are in one packet */
- static uint16_t packed_size[16] =
- {13, 14, 16, 18, 20, 21, 27, 32, 6, 0, 0, 0, 0, 0, 0, 0};
- int len = 0;
+ if (enc->codec_type == CODEC_TYPE_AUDIO) {
+ switch (enc->codec_id) {
+ case CODEC_ID_AMR_NB:
+ { /* We must find out how many AMR blocks there are in one packet */
+ static uint16_t packed_size[16] =
+ {13, 14, 16, 18, 20, 21, 27, 32, 6, 0, 0, 0, 0, 0, 0, 0};
+ int len = 0;
- while (len < size && samplesInChunk < 100) {
- len += packed_size[(pkt->data[len] >> 3) & 0x0F];
- samplesInChunk++;
+ while (len < size && samplesInChunk < 100) {
+ len += packed_size[(pkt->data[len] >> 3) & 0x0F];
+ samplesInChunk++;
+ }
}
- }
- else if(enc->codec_id == CODEC_ID_PCM_ALAW) {
+ break;
+ case CODEC_ID_PCM_ALAW:
samplesInChunk = size/enc->channels;
- }
- else if(enc->codec_id == CODEC_ID_PCM_S16BE || enc->codec_id == CODEC_ID_PCM_S16LE) {
+ break;
+ case CODEC_ID_PCM_S16BE:
+ case CODEC_ID_PCM_S16LE:
samplesInChunk = size/(2*enc->channels);
- }
- else {
+ break;
+ default:
samplesInChunk = 1;
}
+ } else {
+ samplesInChunk = 1;
}
- if ((enc->codec_id == CODEC_ID_MPEG4 || enc->codec_id == CODEC_ID_AAC)
- && trk->vosLen == 0) {
-// assert(enc->extradata_size);
-
+ /* copy extradata if it exists */
+ if (trk->vosLen == 0 && enc->extradata_size > 0) {
trk->vosLen = enc->extradata_size;
trk->vosData = av_malloc(trk->vosLen);
memcpy(trk->vosData, enc->extradata, trk->vosLen);
}
- if (enc->codec_id == CODEC_ID_H264) {
- if (trk->vosLen == 0) {
- /* copy extradata */
- trk->vosLen = enc->extradata_size;
- trk->vosData = av_malloc(trk->vosLen);
- memcpy(trk->vosData, enc->extradata, trk->vosLen);
- }
- if (*(uint8_t *)trk->vosData != 1) {
- /* from x264 or from bytestream h264 */
- /* nal reformating needed */
- avc_parse_nal_units(&pkt->data, &pkt->size);
- assert(pkt->size);
- size = pkt->size;
- }
+ if (enc->codec_id == CODEC_ID_H264 && trk->vosLen > 0 && *(uint8_t *)trk->vosData != 1) {
+ /* from x264 or from bytestream h264 */
+ /* nal reformating needed */
+ avc_parse_nal_units(&pkt->data, &pkt->size);
+ assert(pkt->size);
+ size = pkt->size;
}
cl = trk->entry / MOV_INDEX_CLUSTER_SIZE;
More information about the ffmpeg-cvslog
mailing list