]> git.sesse.net Git - ffmpeg/blobdiff - libavformat/au.c
asm: Consistently uppercase SECTION markers
[ffmpeg] / libavformat / au.c
index 488e2b0155a253330a4aec7f85140890b5f2addc..20c9d41f47091af366c0666b8d5af75c8b34e39a 100644 (file)
@@ -2,6 +2,8 @@
  * AU muxer and demuxer
  * Copyright (c) 2001 Fabrice Bellard
  *
+ * first version by Francois Revol <revol@free.fr>
+ *
  * This file is part of Libav.
  *
  * Libav is free software; you can redistribute it and/or
@@ -20,8 +22,6 @@
  */
 
 /*
- * First version by Francois Revol revol@free.fr
- *
  * Reference documents:
  * http://www.opengroup.org/public/pubs/external/auformat.html
  * http://www.goice.co.jp/member/mo/formats/au.html
@@ -85,13 +85,13 @@ static int au_read_header(AVFormatContext *s)
     codec = ff_codec_get_id(codec_au_tags, id);
 
     if (codec == AV_CODEC_ID_NONE) {
-        av_log_ask_for_sample(s, "unknown or unsupported codec tag: %u\n", id);
+        avpriv_request_sample(s, "unknown or unsupported codec tag: %u", id);
         return AVERROR_PATCHWELCOME;
     }
 
     bps = av_get_bits_per_sample(codec);
     if (!bps) {
-        av_log_ask_for_sample(s, "could not determine bits per sample\n");
+        avpriv_request_sample(s, "Unknown bits per sample");
         return AVERROR_PATCHWELCOME;
     }
 
@@ -108,13 +108,13 @@ static int au_read_header(AVFormatContext *s)
     st = avformat_new_stream(s, NULL);
     if (!st)
         return AVERROR(ENOMEM);
-    st->codec->codec_type  = AVMEDIA_TYPE_AUDIO;
-    st->codec->codec_tag   = id;
-    st->codec->codec_id    = codec;
-    st->codec->channels    = channels;
-    st->codec->sample_rate = rate;
-    st->codec->bit_rate    = channels * rate * bps;
-    st->codec->block_align = channels * bps >> 3;
+    st->codecpar->codec_type  = AVMEDIA_TYPE_AUDIO;
+    st->codecpar->codec_tag   = id;
+    st->codecpar->codec_id    = codec;
+    st->codecpar->channels    = channels;
+    st->codecpar->sample_rate = rate;
+    st->codecpar->bit_rate    = channels * rate * bps;
+    st->codecpar->block_align = channels * bps >> 3;
 
     st->start_time = 0;
     avpriv_set_pts_info(st, 64, 1, rate);
@@ -127,12 +127,12 @@ static int au_read_packet(AVFormatContext *s, AVPacket *pkt)
     int ret;
 
     ret = av_get_packet(s->pb, pkt, BLOCK_SIZE *
-                        s->streams[0]->codec->block_align);
+                        s->streams[0]->codecpar->block_align);
     if (ret < 0)
         return ret;
 
     pkt->stream_index = 0;
-    pkt->duration     = ret / s->streams[0]->codec->block_align;
+    pkt->duration     = ret / s->streams[0]->codecpar->block_align;
 
     return 0;
 }
@@ -157,17 +157,17 @@ AVInputFormat ff_au_demuxer = {
 #define AU_UNKNOWN_SIZE ((uint32_t)(~0))
 
 /* AUDIO_FILE header */
-static int put_au_header(AVIOContext *pb, AVCodecContext *enc)
+static int put_au_header(AVIOContext *pb, AVCodecParameters *par)
 {
-    if (!enc->codec_tag)
+    if (!par->codec_tag)
         return AVERROR(EINVAL);
 
     ffio_wfourcc(pb, ".snd");                   /* magic number */
     avio_wb32(pb, 24);                          /* header size */
     avio_wb32(pb, AU_UNKNOWN_SIZE);             /* data size */
-    avio_wb32(pb, (uint32_t)enc->codec_tag);    /* codec ID */
-    avio_wb32(pb, enc->sample_rate);
-    avio_wb32(pb, (uint32_t)enc->channels);
+    avio_wb32(pb, par->codec_tag);              /* codec ID */
+    avio_wb32(pb, par->sample_rate);
+    avio_wb32(pb, par->channels);
 
     return 0;
 }
@@ -179,7 +179,7 @@ static int au_write_header(AVFormatContext *s)
 
     s->priv_data = NULL;
 
-    if ((ret = put_au_header(pb, s->streams[0]->codec)) < 0)
+    if ((ret = put_au_header(pb, s->streams[0]->codecpar)) < 0)
         return ret;
 
     avio_flush(pb);
@@ -192,7 +192,7 @@ static int au_write_trailer(AVFormatContext *s)
     AVIOContext *pb = s->pb;
     int64_t file_size;
 
-    if (s->pb->seekable) {
+    if (s->pb->seekable & AVIO_SEEKABLE_NORMAL) {
         /* update file size */
         file_size = avio_tell(pb);
         avio_seek(pb, 8, SEEK_SET);
@@ -215,6 +215,7 @@ AVOutputFormat ff_au_muxer = {
     .write_packet  = ff_raw_write_packet,
     .write_trailer = au_write_trailer,
     .codec_tag     = (const AVCodecTag* const []) { codec_au_tags, 0 },
+    .flags         = AVFMT_NOTIMESTAMPS,
 };
 
 #endif /* CONFIG_AU_MUXER */