* License along with FFmpeg; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
+
+#include "libavutil/common.h"
+#include "libavcodec/mpegaudio.h"
#include "avformat.h"
#include "riff.h"
-#include "mpegaudio.h"
#include "asf.h"
-#include "common.h"
#include "asfcrypt.h"
extern void ff_mms_set_stream_selection(URLContext *h, AVFormatContext *format);
}
#endif
-static int is_mms(ByteIOContext *pb)
-{
- return url_fileno(pb) && url_fileno(pb)->prot &&
- !strcmp(url_fileno(pb)->prot->name, "mmsh");
-}
-
static void get_str16_nolen(ByteIOContext *pb, int len, char *buf, int buf_size)
{
char* q = buf;
asf->hdr.file_size = get_le64(pb);
asf->hdr.create_time = get_le64(pb);
asf->nb_packets = get_le64(pb);
- asf->hdr.send_time = get_le64(pb);
asf->hdr.play_time = get_le64(pb);
+ asf->hdr.send_time = get_le64(pb);
asf->hdr.preroll = get_le32(pb);
asf->hdr.ignore = get_le32(pb);
asf->hdr.flags = get_le32(pb);
get_str16_nolen(pb, name_len, name, sizeof(name));
value_type = get_le16(pb);
value_len = get_le16(pb);
- if ((value_type == 0) || (value_type == 1)) // unicode or byte
+ if (value_type <= 1) // unicode or byte
{
if (!strcmp(name,"WM/AlbumTitle")) get_str16_nolen(pb, value_len, s->album, sizeof(s->album));
else if(!strcmp(name,"WM/Genre" )) get_str16_nolen(pb, value_len, s->genre, sizeof(s->genre));
}
else url_fskip(pb, value_len);
}
- if ((value_type >= 2) && (value_type <= 5)) // boolean or DWORD or QWORD or WORD
+ else if (value_type <= 5) // boolean or DWORD or QWORD or WORD
{
value_num= get_value(pb, value_type);
if (!strcmp(name,"WM/Track" ) && s->track == 0) s->track = value_num + 1;
if (!strcmp(name,"WM/TrackNumber")) s->track = value_num;
- }
+ }else
+ url_fskip(pb, value_len);
}
} else if (!memcmp(&g, &metadata_header, sizeof(GUID))) {
int n, stream_num, name_len, value_len, value_type, value_num;
}
}
-#ifdef CONFIG_MMSH_PROTOCOL
- /* Give info about ourselves to the mms protocol */
- if(is_mms(pb))
- ff_mms_set_stream_selection(url_fileno(pb), s);
-#endif
-
return 0;
fail:
AVInputFormat asf_demuxer = {
"asf",
- "asf format",
+ NULL_IF_CONFIG_SMALL("ASF format"),
sizeof(ASFContext),
asf_probe,
asf_read_header,