Mercurial > libavformat.hg
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 { |