Mercurial > libavformat.hg
comparison raw.c @ 6429:3e32902d7025 libavformat
move DTS demuxer to its own file
author | aurel |
---|---|
date | Sun, 29 Aug 2010 19:00:40 +0000 |
parents | f53a4103bec4 |
children | d3a51b32b769 |
comparison
equal
deleted
inserted
replaced
6428:f53a4103bec4 | 6429:3e32902d7025 |
---|---|
231 if ((ret = url_fseek(s->pb, pos + s->data_offset, SEEK_SET)) < 0) | 231 if ((ret = url_fseek(s->pb, pos + s->data_offset, SEEK_SET)) < 0) |
232 return ret; | 232 return ret; |
233 return 0; | 233 return 0; |
234 } | 234 } |
235 | 235 |
236 static int audio_read_header(AVFormatContext *s, | 236 int ff_raw_audio_read_header(AVFormatContext *s, |
237 AVFormatParameters *ap) | 237 AVFormatParameters *ap) |
238 { | 238 { |
239 AVStream *st = av_new_stream(s, 0); | 239 AVStream *st = av_new_stream(s, 0); |
240 if (!st) | 240 if (!st) |
241 return AVERROR(ENOMEM); | 241 return AVERROR(ENOMEM); |
517 return 25; | 517 return 25; |
518 return 0; | 518 return 0; |
519 } | 519 } |
520 #endif | 520 #endif |
521 | 521 |
522 #if CONFIG_DTS_DEMUXER | |
523 #define DCA_MARKER_14B_BE 0x1FFFE800 | |
524 #define DCA_MARKER_14B_LE 0xFF1F00E8 | |
525 #define DCA_MARKER_RAW_BE 0x7FFE8001 | |
526 #define DCA_MARKER_RAW_LE 0xFE7F0180 | |
527 static int dts_probe(AVProbeData *p) | |
528 { | |
529 const uint8_t *buf, *bufp; | |
530 uint32_t state = -1; | |
531 int markers[3] = {0}; | |
532 int sum, max; | |
533 | |
534 buf = p->buf; | |
535 | |
536 for(; buf < (p->buf+p->buf_size)-2; buf+=2) { | |
537 bufp = buf; | |
538 state = (state << 16) | bytestream_get_be16(&bufp); | |
539 | |
540 /* regular bitstream */ | |
541 if (state == DCA_MARKER_RAW_BE || state == DCA_MARKER_RAW_LE) | |
542 markers[0]++; | |
543 | |
544 /* 14 bits big-endian bitstream */ | |
545 if (state == DCA_MARKER_14B_BE) | |
546 if ((bytestream_get_be16(&bufp) & 0xFFF0) == 0x07F0) | |
547 markers[1]++; | |
548 | |
549 /* 14 bits little-endian bitstream */ | |
550 if (state == DCA_MARKER_14B_LE) | |
551 if ((bytestream_get_be16(&bufp) & 0xF0FF) == 0xF007) | |
552 markers[2]++; | |
553 } | |
554 sum = markers[0] + markers[1] + markers[2]; | |
555 max = markers[1] > markers[0]; | |
556 max = markers[2] > markers[max] ? 2 : max; | |
557 if (markers[max] > 3 && p->buf_size / markers[max] < 32*1024 && | |
558 markers[max] * 4 > sum * 3) | |
559 return AVPROBE_SCORE_MAX/2+1; | |
560 | |
561 return 0; | |
562 } | |
563 #endif | |
564 | |
565 #if CONFIG_DIRAC_DEMUXER | 522 #if CONFIG_DIRAC_DEMUXER |
566 static int dirac_probe(AVProbeData *p) | 523 static int dirac_probe(AVProbeData *p) |
567 { | 524 { |
568 if (AV_RL32(p->buf) == MKTAG('B', 'B', 'C', 'D')) | 525 if (AV_RL32(p->buf) == MKTAG('B', 'B', 'C', 'D')) |
569 return AVPROBE_SCORE_MAX; | 526 return AVPROBE_SCORE_MAX; |
654 AVInputFormat ac3_demuxer = { | 611 AVInputFormat ac3_demuxer = { |
655 "ac3", | 612 "ac3", |
656 NULL_IF_CONFIG_SMALL("raw AC-3"), | 613 NULL_IF_CONFIG_SMALL("raw AC-3"), |
657 0, | 614 0, |
658 ac3_probe, | 615 ac3_probe, |
659 audio_read_header, | 616 ff_raw_audio_read_header, |
660 ff_raw_read_partial_packet, | 617 ff_raw_read_partial_packet, |
661 .flags= AVFMT_GENERIC_INDEX, | 618 .flags= AVFMT_GENERIC_INDEX, |
662 .extensions = "ac3", | 619 .extensions = "ac3", |
663 .value = CODEC_ID_AC3, | 620 .value = CODEC_ID_AC3, |
664 }; | 621 }; |
733 ff_raw_write_packet, | 690 ff_raw_write_packet, |
734 .flags= AVFMT_NOTIMESTAMPS, | 691 .flags= AVFMT_NOTIMESTAMPS, |
735 }; | 692 }; |
736 #endif | 693 #endif |
737 | 694 |
738 #if CONFIG_DTS_DEMUXER | |
739 AVInputFormat dts_demuxer = { | |
740 "dts", | |
741 NULL_IF_CONFIG_SMALL("raw DTS"), | |
742 0, | |
743 dts_probe, | |
744 audio_read_header, | |
745 ff_raw_read_partial_packet, | |
746 .flags= AVFMT_GENERIC_INDEX, | |
747 .extensions = "dts", | |
748 .value = CODEC_ID_DTS, | |
749 }; | |
750 #endif | |
751 | |
752 #if CONFIG_DTS_MUXER | 695 #if CONFIG_DTS_MUXER |
753 AVOutputFormat dts_muxer = { | 696 AVOutputFormat dts_muxer = { |
754 "dts", | 697 "dts", |
755 NULL_IF_CONFIG_SMALL("raw DTS"), | 698 NULL_IF_CONFIG_SMALL("raw DTS"), |
756 "audio/x-dca", | 699 "audio/x-dca", |
768 AVInputFormat eac3_demuxer = { | 711 AVInputFormat eac3_demuxer = { |
769 "eac3", | 712 "eac3", |
770 NULL_IF_CONFIG_SMALL("raw E-AC-3"), | 713 NULL_IF_CONFIG_SMALL("raw E-AC-3"), |
771 0, | 714 0, |
772 eac3_probe, | 715 eac3_probe, |
773 audio_read_header, | 716 ff_raw_audio_read_header, |
774 ff_raw_read_partial_packet, | 717 ff_raw_read_partial_packet, |
775 .flags= AVFMT_GENERIC_INDEX, | 718 .flags= AVFMT_GENERIC_INDEX, |
776 .extensions = "eac3", | 719 .extensions = "eac3", |
777 .value = CODEC_ID_EAC3, | 720 .value = CODEC_ID_EAC3, |
778 }; | 721 }; |
797 AVInputFormat gsm_demuxer = { | 740 AVInputFormat gsm_demuxer = { |
798 "gsm", | 741 "gsm", |
799 NULL_IF_CONFIG_SMALL("raw GSM"), | 742 NULL_IF_CONFIG_SMALL("raw GSM"), |
800 0, | 743 0, |
801 NULL, | 744 NULL, |
802 audio_read_header, | 745 ff_raw_audio_read_header, |
803 ff_raw_read_partial_packet, | 746 ff_raw_read_partial_packet, |
804 .flags= AVFMT_GENERIC_INDEX, | 747 .flags= AVFMT_GENERIC_INDEX, |
805 .extensions = "gsm", | 748 .extensions = "gsm", |
806 .value = CODEC_ID_GSM, | 749 .value = CODEC_ID_GSM, |
807 }; | 750 }; |
985 AVInputFormat mlp_demuxer = { | 928 AVInputFormat mlp_demuxer = { |
986 "mlp", | 929 "mlp", |
987 NULL_IF_CONFIG_SMALL("raw MLP"), | 930 NULL_IF_CONFIG_SMALL("raw MLP"), |
988 0, | 931 0, |
989 NULL, | 932 NULL, |
990 audio_read_header, | 933 ff_raw_audio_read_header, |
991 ff_raw_read_partial_packet, | 934 ff_raw_read_partial_packet, |
992 .flags= AVFMT_GENERIC_INDEX, | 935 .flags= AVFMT_GENERIC_INDEX, |
993 .extensions = "mlp", | 936 .extensions = "mlp", |
994 .value = CODEC_ID_MLP, | 937 .value = CODEC_ID_MLP, |
995 }; | 938 }; |
1026 AVInputFormat truehd_demuxer = { | 969 AVInputFormat truehd_demuxer = { |
1027 "truehd", | 970 "truehd", |
1028 NULL_IF_CONFIG_SMALL("raw TrueHD"), | 971 NULL_IF_CONFIG_SMALL("raw TrueHD"), |
1029 0, | 972 0, |
1030 NULL, | 973 NULL, |
1031 audio_read_header, | 974 ff_raw_audio_read_header, |
1032 ff_raw_read_partial_packet, | 975 ff_raw_read_partial_packet, |
1033 .flags= AVFMT_GENERIC_INDEX, | 976 .flags= AVFMT_GENERIC_INDEX, |
1034 .extensions = "thd", | 977 .extensions = "thd", |
1035 .value = CODEC_ID_TRUEHD, | 978 .value = CODEC_ID_TRUEHD, |
1036 }; | 979 }; |
1155 AVInputFormat shorten_demuxer = { | 1098 AVInputFormat shorten_demuxer = { |
1156 "shn", | 1099 "shn", |
1157 NULL_IF_CONFIG_SMALL("raw Shorten"), | 1100 NULL_IF_CONFIG_SMALL("raw Shorten"), |
1158 0, | 1101 0, |
1159 NULL, | 1102 NULL, |
1160 audio_read_header, | 1103 ff_raw_audio_read_header, |
1161 ff_raw_read_partial_packet, | 1104 ff_raw_read_partial_packet, |
1162 .flags= AVFMT_GENERIC_INDEX, | 1105 .flags= AVFMT_GENERIC_INDEX, |
1163 .extensions = "shn", | 1106 .extensions = "shn", |
1164 .value = CODEC_ID_SHORTEN, | 1107 .value = CODEC_ID_SHORTEN, |
1165 }; | 1108 }; |