packages feed

isobmff-builder-0.11.2.0: spec/ElementaryStreamDescriptorSpec.hs

{-# LANGUAGE OverloadedStrings #-}
module ElementaryStreamDescriptorSpec (spec) where

import Test.Hspec
import Data.ByteString.Mp4.Boxes.ElementaryStreamDescriptor
import Data.ByteString.Mp4.Boxes.AudioSpecificConfig
import Data.ByteString.Mp4.Boxes.DecoderConfigDescriptor
import Data.ByteString.Mp4.Boxes.DecoderSpecificInfo
import Data.ByteString.IsoBaseFileFormat.ReExports
import Data.ByteString.IsoBaseFileFormat.Box

spec :: Spec
spec = do
#ifndef COMPLEXTESTS
  return ()
#else
  describe "EsdBox" $ do
    let eb = esdBox (Proxy @TestEsDescriptor) False 0 0 0
    it "has the correct size" $
      boxSize eb `shouldBe` 39
    it "generates the expected bits" $
      printBuilder (boxBuilder eb)
      `shouldBe` "<< 00 00 00 27 65 73 64 73 00 00 00 00 03 19 00 01 00 04 11 40 15 00 00 00 00 00 00 00 00 00 00 00 05 02 11 98 06 01 02 >>"

type TestEsDescriptor  =
  ESDescriptorMp4File
   (StaticFieldValue "esId" 1)
   TestConfigDescriptor

type TestConfigDescriptor  =
  DecoderConfigDescriptor
  'AudioIso14496_3
  'AudioStream
  '[AudioConfigAacMinimal
     'AacLc
     DefaultGASpecificConfig
     (SetEnum "samplingFreq" SamplingFreq 'SF48000)
     (SetEnum "channelConfig" ChannelConfig 'SinglePair)]
  '[]
#endif