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 };