Merge commit '57231e4d5b467833fb289439cd35a92513bb55c1'
[ffmpeg.git] / libavcodec / tak.h
index fa91149..08af506 100644 (file)
@@ -2,20 +2,20 @@
  * TAK decoder/demuxer common code
  * Copyright (c) 2012 Paul B Mahol
  *
- * This file is part of Libav.
+ * This file is part of FFmpeg.
  *
- * Libav is free software; you can redistribute it and/or
+ * FFmpeg is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
  * License as published by the Free Software Foundation; either
  * version 2.1 of the License, or (at your option) any later version.
  *
- * Libav is distributed in the hope that it will be useful,
+ * FFmpeg is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with Libav; if not, write to the Free Software
+ * License along with FFmpeg; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
 #include "get_bits.h"
 #include "avcodec.h"
 
-#define TAK_FORMAT_DATA_TYPE_BITS               3
+#define TAK_FORMAT_DATA_TYPE_BITS              3
 #define TAK_FORMAT_SAMPLE_RATE_BITS            18
-#define TAK_FORMAT_BPS_BITS                     5
-#define TAK_FORMAT_CHANNEL_BITS                 4
-#define TAK_FORMAT_VALID_BITS                   5
-#define TAK_FORMAT_CH_LAYOUT_BITS               6
-#define TAK_SIZE_FRAME_DURATION_BITS            4
+#define TAK_FORMAT_BPS_BITS                    5
+#define TAK_FORMAT_CHANNEL_BITS                4
+#define TAK_FORMAT_VALID_BITS                  5
+#define TAK_FORMAT_CH_LAYOUT_BITS              6
+#define TAK_SIZE_FRAME_DURATION_BITS           4
 #define TAK_SIZE_SAMPLES_NUM_BITS              35
 #define TAK_LAST_FRAME_POS_BITS                40
 #define TAK_LAST_FRAME_SIZE_BITS               24
-#define TAK_ENCODER_CODEC_BITS                  6
-#define TAK_ENCODER_PROFILE_BITS                4
+#define TAK_ENCODER_CODEC_BITS                 6
+#define TAK_ENCODER_PROFILE_BITS               4
 #define TAK_ENCODER_VERSION_BITS               24
-#define TAK_SAMPLE_RATE_MIN                  6000
-#define TAK_CHANNELS_MIN                        1
-#define TAK_BPS_MIN                             8
-#define TAK_FRAME_HEADER_FLAGS_BITS             3
-#define TAK_FRAME_HEADER_SYNC_ID           0xA0FF
+#define TAK_SAMPLE_RATE_MIN                    6000
+#define TAK_CHANNELS_MIN                       1
+#define TAK_BPS_MIN                            8
+#define TAK_FRAME_HEADER_FLAGS_BITS            3
+#define TAK_FRAME_HEADER_SYNC_ID               0xA0FF
 #define TAK_FRAME_HEADER_SYNC_ID_BITS          16
 #define TAK_FRAME_HEADER_SAMPLE_COUNT_BITS     14
 #define TAK_FRAME_HEADER_NO_BITS               21
-#define TAK_FRAME_DURATION_QUANT_SHIFT          5
+#define TAK_FRAME_DURATION_QUANT_SHIFT         5
 #define TAK_CRC24_BITS                         24
 
+#define TAK_MAX_CHANNELS                  ( 1 << TAK_FORMAT_CHANNEL_BITS )
 
-#define TAK_FRAME_FLAG_IS_LAST                0x1
-#define TAK_FRAME_FLAG_HAS_INFO               0x2
-#define TAK_FRAME_FLAG_HAS_METADATA           0x4
+#define TAK_MIN_FRAME_HEADER_BITS         ( TAK_FRAME_HEADER_SYNC_ID_BITS + \
+                                            TAK_FRAME_HEADER_FLAGS_BITS   + \
+                                            TAK_FRAME_HEADER_NO_BITS      + \
+                                            TAK_CRC24_BITS )
 
-#define TAK_MAX_CHANNELS               (1 << TAK_FORMAT_CHANNEL_BITS)
+#define TAK_MIN_FRAME_HEADER_LAST_BITS    ( TAK_MIN_FRAME_HEADER_BITS + 2 + \
+                                            TAK_FRAME_HEADER_SAMPLE_COUNT_BITS )
 
-#define TAK_MIN_FRAME_HEADER_BITS      (TAK_FRAME_HEADER_SYNC_ID_BITS + \
-                                        TAK_FRAME_HEADER_FLAGS_BITS   + \
-                                        TAK_FRAME_HEADER_NO_BITS      + \
-                                        TAK_CRC24_BITS)
+#define TAK_ENCODER_BITS         ( TAK_ENCODER_CODEC_BITS        + \
+                                   TAK_ENCODER_PROFILE_BITS )
 
-#define TAK_MIN_FRAME_HEADER_LAST_BITS (TAK_MIN_FRAME_HEADER_BITS + 2 + \
-                                        TAK_FRAME_HEADER_SAMPLE_COUNT_BITS)
+#define TAK_SIZE_BITS            ( TAK_SIZE_SAMPLES_NUM_BITS     + \
+                                   TAK_SIZE_FRAME_DURATION_BITS )
 
-#define TAK_ENCODER_BITS               (TAK_ENCODER_CODEC_BITS + \
-                                        TAK_ENCODER_PROFILE_BITS)
+#define TAK_FORMAT_BITS          ( TAK_FORMAT_DATA_TYPE_BITS     + \
+                                   TAK_FORMAT_SAMPLE_RATE_BITS   + \
+                                   TAK_FORMAT_BPS_BITS           + \
+                                   TAK_FORMAT_CHANNEL_BITS + 1   + \
+                                   TAK_FORMAT_VALID_BITS   + 1   + \
+                                   TAK_FORMAT_CH_LAYOUT_BITS     * \
+                                   TAK_MAX_CHANNELS )
 
-#define TAK_SIZE_BITS                  (TAK_SIZE_SAMPLES_NUM_BITS + \
-                                        TAK_SIZE_FRAME_DURATION_BITS)
+#define TAK_STREAMINFO_BITS      ( TAK_ENCODER_BITS              + \
+                                   TAK_SIZE_BITS                 + \
+                                   TAK_FORMAT_BITS )
 
-#define TAK_FORMAT_BITS                (TAK_FORMAT_DATA_TYPE_BITS   + \
-                                        TAK_FORMAT_SAMPLE_RATE_BITS + \
-                                        TAK_FORMAT_BPS_BITS         + \
-                                        TAK_FORMAT_CHANNEL_BITS + 1 + \
-                                        TAK_FORMAT_VALID_BITS   + 1 + \
-                                        TAK_FORMAT_CH_LAYOUT_BITS   * \
-                                        TAK_MAX_CHANNELS)
+#define TAK_MAX_FRAME_HEADER_BITS  ( TAK_MIN_FRAME_HEADER_LAST_BITS + \
+                                     TAK_STREAMINFO_BITS + 31 )
 
-#define TAK_STREAMINFO_BITS            (TAK_ENCODER_BITS + \
-                                        TAK_SIZE_BITS    + \
-                                        TAK_FORMAT_BITS)
-
-#define TAK_MAX_FRAME_HEADER_BITS      (TAK_MIN_FRAME_HEADER_LAST_BITS + \
-                                        TAK_STREAMINFO_BITS + 31)
-
-#define TAK_STREAMINFO_BYTES           ((TAK_STREAMINFO_BITS       + 7) / 8)
-#define TAK_MAX_FRAME_HEADER_BYTES     ((TAK_MAX_FRAME_HEADER_BITS + 7) / 8)
-#define TAK_MIN_FRAME_HEADER_BYTES     ((TAK_MIN_FRAME_HEADER_BITS + 7) / 8)
-
-enum TAKCodecType {
-    TAK_CODEC_MONO_STEREO  = 2,
-    TAK_CODEC_MULTICHANNEL = 4
-};
+#define TAK_STREAMINFO_BYTES        (( TAK_STREAMINFO_BITS + 7 ) / 8)
+#define TAK_MAX_FRAME_HEADER_BYTES  (( TAK_MAX_FRAME_HEADER_BITS + 7 ) / 8)
+#define TAK_MIN_FRAME_HEADER_BYTES  (( TAK_MIN_FRAME_HEADER_BITS + 7 ) / 8)
 
 enum TAKMetaDataType {
     TAK_METADATA_END = 0,
@@ -127,17 +117,16 @@ enum TAKFrameSizeType {
 };
 
 typedef struct TAKStreamInfo {
-    int               flags;
-    enum TAKCodecType codec;
-    int               data_type;
-    int               sample_rate;
-    int               channels;
-    int               bps;
-    int               frame_num;
-    int               frame_samples;
-    int               last_frame_samples;
-    uint64_t          ch_layout;
-    int64_t           samples;
+    int      codec;
+    int      data_type;
+    int      sample_rate;
+    int      channels;
+    int      bps;
+    int      frame_num;
+    int      frame_samples;
+    int      last_frame_samples;
+    uint64_t ch_layout;
+    int64_t  samples;
 } TAKStreamInfo;
 
 void ff_tak_init_crc(void);
@@ -156,11 +145,9 @@ void avpriv_tak_parse_streaminfo(GetBitContext *gb, TAKStreamInfo *s);
  * @param      avctx             AVCodecContext to use as av_log() context
  * @param[in]  gb                GetBitContext from which to read frame header
  * @param[out] s                 frame information
- * @param      log_level_offset  log level offset, can be used to silence
- *                               error messages.
- * @return non-zero on error, 0 if OK
+ * @param      log_level_offset  log level offset. can be used to silence error messages.
+ * @return non-zero on error, 0 if ok
  */
 int ff_tak_decode_frame_header(AVCodecContext *avctx, GetBitContext *gb,
                                TAKStreamInfo *s, int log_level_offset);
-
 #endif /* AVCODEC_TAK_H */