]> git.sesse.net Git - ffmpeg/blobdiff - libavformat/aiffenc.c
Merge remote-tracking branch 'qatar/master'
[ffmpeg] / libavformat / aiffenc.c
index 3b2fc381605f14444ed6a15b4bdc70f637b049b3..e5c38b1547bd6f77a067e162c8572f3d21d620f3 100644 (file)
@@ -19,8 +19,9 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include "libavutil/intfloat_readwrite.h"
+#include "libavutil/intfloat.h"
 #include "avformat.h"
+#include "internal.h"
 #include "aiff.h"
 #include "avio_internal.h"
 #include "isom.h"
@@ -36,7 +37,7 @@ static int aiff_write_header(AVFormatContext *s)
     AIFFOutputContext *aiff = s->priv_data;
     AVIOContext *pb = s->pb;
     AVCodecContext *enc = s->streams[0]->codec;
-    AVExtFloat sample_rate;
+    uint64_t sample_rate;
     int aifc = 0;
 
     /* First verify if format is ok */
@@ -88,8 +89,9 @@ static int aiff_write_header(AVFormatContext *s)
 
     avio_wb16(pb, enc->bits_per_coded_sample); /* Sample size */
 
-    sample_rate = av_dbl2ext((double)enc->sample_rate);
-    avio_write(pb, (uint8_t*)&sample_rate, sizeof(sample_rate));
+    sample_rate = av_double2int(enc->sample_rate);
+    avio_wb16(pb, (sample_rate >> 52) + (16383 - 1023));
+    avio_wb64(pb, UINT64_C(1) << 63 | sample_rate << 11);
 
     if (aifc) {
         avio_wl32(pb, enc->codec_tag);
@@ -103,7 +105,7 @@ static int aiff_write_header(AVFormatContext *s)
     avio_wb32(pb, 0);                    /* Data offset */
     avio_wb32(pb, 0);                    /* Block-size (block align) */
 
-    av_set_pts_info(s->streams[0], 64, 1, s->streams[0]->codec->sample_rate);
+    avpriv_set_pts_info(s->streams[0], 64, 1, s->streams[0]->codec->sample_rate);
 
     /* Data is starting here */
     avio_flush(pb);