comparison ffm.c @ 187:2fa5e94ba716 libavformat

add av_new_stream() usage
author bellard
date Fri, 08 Aug 2003 17:52:30 +0000
parents 25062c9b1f86
children 3d92f793fd67
comparison
equal deleted inserted replaced
186:2265d21a04c8 187:2fa5e94ba716
366 FFMContext *ffm = s->priv_data; 366 FFMContext *ffm = s->priv_data;
367 AVStream *st; 367 AVStream *st;
368 FFMStream *fst; 368 FFMStream *fst;
369 ByteIOContext *pb = &s->pb; 369 ByteIOContext *pb = &s->pb;
370 AVCodecContext *codec; 370 AVCodecContext *codec;
371 int i; 371 int i, nb_streams;
372 uint32_t tag; 372 uint32_t tag;
373 373
374 /* header */ 374 /* header */
375 tag = get_le32(pb); 375 tag = get_le32(pb);
376 if (tag != MKTAG('F', 'F', 'M', '1')) 376 if (tag != MKTAG('F', 'F', 'M', '1'))
384 ffm->file_size = url_filesize(url_fileno(pb)); 384 ffm->file_size = url_filesize(url_fileno(pb));
385 } else { 385 } else {
386 ffm->file_size = (uint64_t_C(1) << 63) - 1; 386 ffm->file_size = (uint64_t_C(1) << 63) - 1;
387 } 387 }
388 388
389 s->nb_streams = get_be32(pb); 389 nb_streams = get_be32(pb);
390 get_be32(pb); /* total bitrate */ 390 get_be32(pb); /* total bitrate */
391 /* read each stream */ 391 /* read each stream */
392 for(i=0;i<s->nb_streams;i++) { 392 for(i=0;i<nb_streams;i++) {
393 char rc_eq_buf[128]; 393 char rc_eq_buf[128];
394 394
395 st = av_mallocz(sizeof(AVStream)); 395 st = av_new_stream(s, 0);
396 if (!st) 396 if (!st)
397 goto fail; 397 goto fail;
398 avcodec_get_context_defaults(&st->codec);
399 s->streams[i] = st;
400 fst = av_mallocz(sizeof(FFMStream)); 398 fst = av_mallocz(sizeof(FFMStream));
401 if (!fst) 399 if (!fst)
402 goto fail; 400 goto fail;
403 st->priv_data = fst; 401 st->priv_data = fst;
404 402
609 607
610 lseek(fd, 8, SEEK_SET); 608 lseek(fd, 8, SEEK_SET);
611 read(fd, buf, 8); 609 read(fd, buf, 8);
612 pos = 0; 610 pos = 0;
613 for(i=0;i<8;i++) 611 for(i=0;i<8;i++)
614 pos |= buf[i] << (56 - i * 8); 612 pos |= (int64_t)buf[i] << (56 - i * 8);
615 return pos; 613 return pos;
616 } 614 }
617 615
618 void ffm_write_write_index(int fd, offset_t pos) 616 void ffm_write_write_index(int fd, offset_t pos)
619 { 617 {