Mercurial > libavformat.hg
comparison mov.c @ 3619:bd4b7c8fec83 libavformat
move version specific parsing code before codec specific code, will be needed
author | bcoudurier |
---|---|
date | Sat, 02 Aug 2008 03:35:43 +0000 |
parents | f3db1276dc02 |
children | a52f6dd66490 |
comparison
equal
deleted
inserted
replaced
3618:e77025bff589 | 3619:bd4b7c8fec83 |
---|---|
846 sc->audio_cid = get_be16(pb); | 846 sc->audio_cid = get_be16(pb); |
847 get_be16(pb); /* packet size = 0 */ | 847 get_be16(pb); /* packet size = 0 */ |
848 | 848 |
849 st->codec->sample_rate = ((get_be32(pb) >> 16)); | 849 st->codec->sample_rate = ((get_be32(pb) >> 16)); |
850 | 850 |
851 //Read QT version 1 fields. In version 0 these do not exist. | |
852 dprintf(c->fc, "version =%d, isom =%d\n",version,c->isom); | |
853 if(!c->isom) { | |
854 if(version==1) { | |
855 sc->samples_per_frame = get_be32(pb); | |
856 get_be32(pb); /* bytes per packet */ | |
857 sc->bytes_per_frame = get_be32(pb); | |
858 get_be32(pb); /* bytes per sample */ | |
859 } else if(version==2) { | |
860 get_be32(pb); /* sizeof struct only */ | |
861 st->codec->sample_rate = av_int2dbl(get_be64(pb)); /* float 64 */ | |
862 st->codec->channels = get_be32(pb); | |
863 get_be32(pb); /* always 0x7F000000 */ | |
864 get_be32(pb); /* bits per channel if sound is uncompressed */ | |
865 get_be32(pb); /* lcpm format specific flag */ | |
866 get_be32(pb); /* bytes per audio packet if constant */ | |
867 get_be32(pb); /* lpcm frames per audio packet if constant */ | |
868 } | |
869 } | |
870 | |
851 switch (st->codec->codec_id) { | 871 switch (st->codec->codec_id) { |
852 case CODEC_ID_PCM_S8: | 872 case CODEC_ID_PCM_S8: |
853 case CODEC_ID_PCM_U8: | 873 case CODEC_ID_PCM_U8: |
854 if (st->codec->bits_per_sample == 16) | 874 if (st->codec->bits_per_sample == 16) |
855 st->codec->codec_id = CODEC_ID_PCM_S16BE; | 875 st->codec->codec_id = CODEC_ID_PCM_S16BE; |
878 sc->samples_per_frame = 160; | 898 sc->samples_per_frame = 160; |
879 sc->bytes_per_frame = 33; | 899 sc->bytes_per_frame = 33; |
880 break; | 900 break; |
881 default: | 901 default: |
882 break; | 902 break; |
883 } | |
884 | |
885 //Read QT version 1 fields. In version 0 these do not exist. | |
886 dprintf(c->fc, "version =%d, isom =%d\n",version,c->isom); | |
887 if(!c->isom) { | |
888 if(version==1) { | |
889 sc->samples_per_frame = get_be32(pb); | |
890 get_be32(pb); /* bytes per packet */ | |
891 sc->bytes_per_frame = get_be32(pb); | |
892 get_be32(pb); /* bytes per sample */ | |
893 } else if(version==2) { | |
894 get_be32(pb); /* sizeof struct only */ | |
895 st->codec->sample_rate = av_int2dbl(get_be64(pb)); /* float 64 */ | |
896 st->codec->channels = get_be32(pb); | |
897 get_be32(pb); /* always 0x7F000000 */ | |
898 get_be32(pb); /* bits per channel if sound is uncompressed */ | |
899 get_be32(pb); /* lcpm format specific flag */ | |
900 get_be32(pb); /* bytes per audio packet if constant */ | |
901 get_be32(pb); /* lpcm frames per audio packet if constant */ | |
902 } | |
903 } | 903 } |
904 | 904 |
905 bits_per_sample = av_get_bits_per_sample(st->codec->codec_id); | 905 bits_per_sample = av_get_bits_per_sample(st->codec->codec_id); |
906 if (bits_per_sample) { | 906 if (bits_per_sample) { |
907 st->codec->bits_per_sample = bits_per_sample; | 907 st->codec->bits_per_sample = bits_per_sample; |