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;