Unified · Split
| @@ -27,6 +27,8 @@ · 26 unmodified lines | ||
| 27 | 27 | #include "oggdec.h" |
| 28 | 28 | |
| 29 | 29 | #define OGG_FLAC_METADATA_TYPE_STREAMINFO 0x7F |
| 30 | +#define OGG_FLAC_MAGIC "\177FLAC" | |
| 31 | +#define OGG_FLAC_MAGIC_SIZE sizeof(OGG_FLAC_MAGIC)-1 | |
| 30 | 32 | |
| 31 | 33 | static int |
| 32 | 34 | flac_header (AVFormatContext * s, int idx) |
| @@ -78,6 +80,27 @@ flac_header (AVFormatContext * s, int idx) · 45 unmodified lines | ||
| 78 | 80 | return 1; |
| 79 | 81 | } |
| 80 | 82 | |
| 83 | +static int | |
| 84 | +flac_packet (AVFormatContext * s, int idx) | |
| 85 | +{ | |
| 86 | + struct ogg *ogg = s->priv_data; | |
| 87 | + struct ogg_stream *os = ogg->streams + idx; | |
| 88 | + | |
| 89 | + if (os->psize > OGG_FLAC_MAGIC_SIZE && | |
| 90 | + !memcmp( | |
| 91 | + os->buf + os->pstart, | |
| 92 | + OGG_FLAC_MAGIC, | |
| 93 | + OGG_FLAC_MAGIC_SIZE)) | |
| 94 | + return 1; | |
| 95 | + | |
| 96 | + if (os->psize > 0 && | |
| 97 | + ((os->buf[os->pstart] & 0x7F) == FLAC_METADATA_TYPE_VORBIS_COMMENT)) { | |
| 98 | + return 1; | |
| 99 | + } | |
| 100 | + | |
| 101 | + return 0; | |
| 102 | +} | |
| 103 | + | |
| 81 | 104 | static int |
| 82 | 105 | old_flac_header (AVFormatContext * s, int idx) |
| 83 | 106 | { |
| @@ -127,10 +150,11 @@ fail: · 43 unmodified lines | ||
| 127 | 150 | } |
| 128 | 151 | |
| 129 | 152 | const struct ogg_codec ff_flac_codec = { |
| 130 | − .magic = "\177FLAC", | |
| 131 | − .magicsize = 5, | |
| 153 | + .magic = OGG_FLAC_MAGIC, | |
| 154 | + .magicsize = OGG_FLAC_MAGIC_SIZE, | |
| 132 | 155 | .header = flac_header, |
| 133 | 156 | .nb_header = 2, |
| 157 | + .packet = flac_packet, | |
| 134 | 158 | }; |
| 135 | 159 | |
| 136 | 160 | const struct ogg_codec ff_old_flac_codec = { |
| @@ -5,8 +5,6 @@ Stream ID: 0, frame PTS: 0, metadata: N/A · 4 unmodified lines | ||
| 5 | 5 | Stream ID: 0, packet PTS: 4608, packet DTS: 4608 |
| 6 | 6 | Stream ID: 0, frame PTS: 4608, metadata: N/A |
| 7 | 7 | Stream ID: 0, packet PTS: 0, packet DTS: 0 |
| 8 | −Stream ID: 0, packet PTS: 0, packet DTS: 0 | |
| 9 | −Stream ID: 0, packet PTS: 0, packet DTS: 0 | |
| 10 | 8 | Stream ID: 0, frame PTS: 0, metadata: N/A |
| 11 | 9 | Stream ID: 0, packet PTS: 4608, packet DTS: 4608 |
| 12 | 10 | Stream ID: 0, frame PTS: 4608, metadata: N/A |