## gstriff

gstriff — Riff fileformat utillity functions.

## Synopsis

    #include <gst/riff/riff-media.h>

    #define             GST_RIFF_00
    #define             GST_RIFF_0021
    #define             GST_RIFF_0031
    #define             GST_RIFF_0032
    #define             GST_RIFF_00AM
    #define             GST_RIFF_00__
    #define             GST_RIFF_00db
    #define             GST_RIFF_00dc
    #define             GST_RIFF_00dx
    #define             GST_RIFF_00id
    #define             GST_RIFF_00iv
    #define             GST_RIFF_00pc
    #define             GST_RIFF_00rt
    #define             GST_RIFF_00vc
    #define             GST_RIFF_00xm
    #define             GST_RIFF_00xx
    #define             GST_RIFF_01
    #define             GST_RIFF_01dc
    #define             GST_RIFF_01pc
    #define             GST_RIFF_01wb
    #define             GST_RIFF_02
    #define             GST_RIFF_03
    #define             GST_RIFF_04
    #define             GST_RIFF_05
    #define             GST_RIFF_06
    #define             GST_RIFF_07
    #define             GST_RIFF_AURA
    #define             GST_RIFF_BW10
    #define             GST_RIFF_CCC
    #define             GST_RIFF_CRAM
    #define             GST_RIFF_CVID
    #define             GST_RIFF_CYUV
    #define             GST_RIFF_DIB
    #define             GST_RIFF_DISP
    #define             GST_RIFF_DIV3
    #define             GST_RIFF_DMB1
    #define             GST_RIFF_FCCH_MSVC
    #define             GST_RIFF_FCCH_RLE
    #define             GST_RIFF_FCCH_msvc
    #define             GST_RIFF_FCC_auds
    #define             GST_RIFF_FCC_iavs
    #define             GST_RIFF_FCC_pads
    #define             GST_RIFF_FCC_txts
    #define             GST_RIFF_FCC_vidc
    #define             GST_RIFF_FCC_vids
    #define             GST_RIFF_FF00
    #define             GST_RIFF_H263
    #define             GST_RIFF_I420
    #define             GST_RIFF_IDIT
    #define             GST_RIFF_IJPG
    #define             GST_RIFF_INFO_IARL
    #define             GST_RIFF_INFO_IART
    #define             GST_RIFF_INFO_ICMS
    #define             GST_RIFF_INFO_ICMT
    #define             GST_RIFF_INFO_ICOP
    #define             GST_RIFF_INFO_ICRD
    #define             GST_RIFF_INFO_ICRP
    #define             GST_RIFF_INFO_IDIM
    #define             GST_RIFF_INFO_IDPI
    #define             GST_RIFF_INFO_IENG
    #define             GST_RIFF_INFO_IGNR
    #define             GST_RIFF_INFO_IKEY
    #define             GST_RIFF_INFO_ILGT
    #define             GST_RIFF_INFO_IMED
    #define             GST_RIFF_INFO_INAM
    #define             GST_RIFF_INFO_IPLT
    #define             GST_RIFF_INFO_IPRD
    #define             GST_RIFF_INFO_ISBJ
    #define             GST_RIFF_INFO_ISFT
    #define             GST_RIFF_INFO_ISHP
    #define             GST_RIFF_INFO_ISRC
    #define             GST_RIFF_INFO_ISRF
    #define             GST_RIFF_INFO_ITCH
    #define             GST_RIFF_ISBJ
    #define             GST_RIFF_ISFT
    #define             GST_RIFF_IV31
    #define             GST_RIFF_IV32
    #define             GST_RIFF_IV41
    #define             GST_RIFF_IV50
    #define             GST_RIFF_IYUV
    #define             GST_RIFF_JPEG
    #define             GST_RIFF_L263
    #define             GST_RIFF_LIST_AVIX
    #define             GST_RIFF_LIST_INFO
    #define             GST_RIFF_LIST_adtl
    #define             GST_RIFF_LIST_hdrl
    #define             GST_RIFF_LIST_movi
    #define             GST_RIFF_LIST_odml
    #define             GST_RIFF_LIST_strl
    #define             GST_RIFF_M263
    #define             GST_RIFF_MJPG
    #define             GST_RIFF_MPIX
    #define             GST_RIFF_MVI1
    #define             GST_RIFF_NONE
    #define             GST_RIFF_PACK
    #define             GST_RIFF_Q1_0
    #define             GST_RIFF_RAW
    #define             GST_RIFF_RGB
    #define             GST_RIFF_RIFF_AVI
    #define             GST_RIFF_RIFF_CDXA
    #define             GST_RIFF_RIFF_WAVE
    #define             GST_RIFF_RLE4
    #define             GST_RIFF_RLE8
    #define             GST_RIFF_RT21
    #define             GST_RIFF_SFMC
    #define             GST_RIFF_TAG_acid
    #define             GST_RIFF_TAG_AVF0
    #define             GST_RIFF_TAG_BEXT
    #define             GST_RIFF_TAG_JUNK
    #define             GST_RIFF_TAG_JUNQ
    #define             GST_RIFF_TAG_LIST
    #define             GST_RIFF_TAG_RIFF
    #define             GST_RIFF_TAG_RIFX
    #define             GST_RIFF_TAG_avih
    #define             GST_RIFF_TAG_bext
    #define             GST_RIFF_TAG_cue
    #define             GST_RIFF_TAG_data
    #define             GST_RIFF_TAG_dmlh
    #define             GST_RIFF_TAG_fact
    #define             GST_RIFF_TAG_fmt
    #define             GST_RIFF_TAG_idx1
    #define             GST_RIFF_TAG_plst
    #define             GST_RIFF_TAG_strd
    #define             GST_RIFF_TAG_strf
    #define             GST_RIFF_TAG_strh
    #define             GST_RIFF_TAG_strn
    #define             GST_RIFF_TAG_vedt
    #define             GST_RIFF_TRAN
    #define             GST_RIFF_ULTI
    #define             GST_RIFF_V422
    #define             GST_RIFF_VDOW
    #define             GST_RIFF_VIXL
    #define             GST_RIFF_VSSH
    #define             GST_RIFF_VYUY
    #define             GST_RIFF_WHAM
    #define             GST_RIFF_WINX
    #define             GST_RIFF_WPY2
    #define             GST_RIFF_XMPG
    #define             GST_RIFF_Y41P
    #define             GST_RIFF_YUV8
    #define             GST_RIFF_YUV9
    #define             GST_RIFF_YUY2
    #define             GST_RIFF_YV12
    #define             GST_RIFF_YVU9
    #define             GST_RIFF_azpr
    #define             GST_RIFF_bw10
    #define             GST_RIFF_ccc
    #define             GST_RIFF_cram
    #define             GST_RIFF_cvid
    #define             GST_RIFF_cyuv
    #define             GST_RIFF_dmb1
    #define             GST_RIFF_h263
    #define             GST_RIFF_i263
    #define             GST_RIFF_i420
    #define             GST_RIFF_iv31
    #define             GST_RIFF_iv32
    #define             GST_RIFF_iv41
    #define             GST_RIFF_iv50
    #define             GST_RIFF_iyuv
    #define             GST_RIFF_jpeg
    #define             GST_RIFF_m263
    #define             GST_RIFF_mJPG
    #define             GST_RIFF_mvi1
    #define             GST_RIFF_none
    #define             GST_RIFF_pack
    #define             GST_RIFF_rec
    #define             GST_RIFF_rgb
    #define             GST_RIFF_rle4
    #define             GST_RIFF_rle8
    #define             GST_RIFF_rpza
    #define             GST_RIFF_rt21
    #define             GST_RIFF_tran
    #define             GST_RIFF_ulti
    #define             GST_RIFF_v422
    #define             GST_RIFF_vixl
    #define             GST_RIFF_vyuy
    #define             GST_RIFF_wham
    #define             GST_RIFF_x263
    #define             GST_RIFF_xmpg
    #define             GST_RIFF_y41p
    #define             GST_RIFF_yuy2
    #define             GST_RIFF_yv12
                        gst_riff_acid;
    GstCaps *           gst_riff_create_audio_caps          (guint16 codec_id,
                                                             gst_riff_strh *strh,
                                                             gst_riff_strf_auds *strf,
                                                             GstBuffer *strf_data,
                                                             GstBuffer *strd_data,
                                                             char **codec_name);
    GstCaps *           gst_riff_create_audio_template_caps (void);
    GstCaps *           gst_riff_create_iavs_caps           (guint32 codec_fcc,
                                                             gst_riff_strh *strh,
                                                             gst_riff_strf_iavs *strf,
                                                             GstBuffer *strf_data,
                                                             GstBuffer *strd_data,
                                                             char **codec_name);
    GstCaps *           gst_riff_create_iavs_template_caps  (void);
    GstCaps *           gst_riff_create_video_caps          (guint32 codec_fcc,
                                                             gst_riff_strh *strh,
                                                             gst_riff_strf_vids *strf,
                                                             GstBuffer *strf_data,
                                                             GstBuffer *strd_data,
                                                             char **codec_name);
    GstCaps *           gst_riff_create_video_template_caps (void);
                        gst_riff_dmlh;
                        gst_riff_index_entry;
    void                gst_riff_init                       (void);
    gboolean            gst_riff_parse_chunk                (GstElement *element,
                                                             GstBuffer *buf,
                                                             guint *offset,
                                                             guint32 *fourcc,
                                                             GstBuffer **chunk_data);
    gboolean            gst_riff_parse_file_header          (GstElement *element,
                                                             GstBuffer *buf,
                                                             guint32 *doctype);
    void                gst_riff_parse_info                 (GstElement *element,
                                                             GstBuffer *buf,
                                                             GstTagList **taglist);
    gboolean            gst_riff_parse_strf_auds            (GstElement *element,
                                                             GstBuffer *buf,
                                                             gst_riff_strf_auds **strf,
                                                             GstBuffer **data);
    gboolean            gst_riff_parse_strf_iavs            (GstElement *element,
                                                             GstBuffer *buf,
                                                             gst_riff_strf_iavs **strf,
                                                             GstBuffer **data);
    gboolean            gst_riff_parse_strf_vids            (GstElement *element,
                                                             GstBuffer *buf,
                                                             gst_riff_strf_vids **strf,
                                                             GstBuffer **data);
    gboolean            gst_riff_parse_strh                 (GstElement *element,
                                                             GstBuffer *buf,
                                                             gst_riff_strh **strh);
    GstFlowReturn       gst_riff_read_chunk                 (GstElement *element,
                                                             GstPad *pad,
                                                             guint64 *offset,
                                                             guint32 *tag,
                                                             GstBuffer **chunk_data);
                        gst_riff_strf_auds;
                        gst_riff_strf_iavs;
                        gst_riff_strf_vids;
                        gst_riff_strh;

## Description

A collection of functions to handle riff base files, such as avi, wav and asf.

## Details

### GST_RIFF_00

    #define GST_RIFF_00   GST_MAKE_FOURCC ('0', '0',0x00,0x00)

### GST_RIFF_0021

    #define GST_RIFF_0021 GST_MAKE_FOURCC ('0', '0', '2', '1')

### GST_RIFF_0031

    #define GST_RIFF_0031 GST_MAKE_FOURCC ('0', '0', '3', '1')

### GST_RIFF_0032

    #define GST_RIFF_0032 GST_MAKE_FOURCC ('0', '0', '3', '2')

### GST_RIFF_00AM

    #define GST_RIFF_00AM GST_MAKE_FOURCC ('0', '0', 'A', 'M')

### GST_RIFF_00__

    #define GST_RIFF_00__ GST_MAKE_FOURCC ('0', '0', '_', '_')

### GST_RIFF_00db

    #define GST_RIFF_00db GST_MAKE_FOURCC ('0', '0', 'd', 'b')

### GST_RIFF_00dc

    #define GST_RIFF_00dc GST_MAKE_FOURCC ('0', '0', 'd', 'c')

### GST_RIFF_00dx

    #define GST_RIFF_00dx GST_MAKE_FOURCC ('0', '0', 'd', 'x')

### GST_RIFF_00id

    #define GST_RIFF_00id GST_MAKE_FOURCC ('0', '0', 'i', 'd')

### GST_RIFF_00iv

    #define GST_RIFF_00iv GST_MAKE_FOURCC ('0', '0', 'i', 'v')

### GST_RIFF_00pc

    #define GST_RIFF_00pc GST_MAKE_FOURCC ('0', '0', 'p', 'c')

### GST_RIFF_00rt

    #define GST_RIFF_00rt GST_MAKE_FOURCC ('0', '0', 'r', 't')

### GST_RIFF_00vc

    #define GST_RIFF_00vc GST_MAKE_FOURCC ('0', '0', 'v', 'c')

### GST_RIFF_00xm

    #define GST_RIFF_00xm GST_MAKE_FOURCC ('0', '0', 'x', 'm')

### GST_RIFF_00xx

    #define GST_RIFF_00xx GST_MAKE_FOURCC ('0', '0', 'x', 'x')

### GST_RIFF_01

    #define GST_RIFF_01   GST_MAKE_FOURCC ('0', '1',0x00,0x00)

### GST_RIFF_01dc

    #define GST_RIFF_01dc GST_MAKE_FOURCC ('0', '1', 'd', 'c')

### GST_RIFF_01pc

    #define GST_RIFF_01pc GST_MAKE_FOURCC ('0', '1', 'p', 'c')

### GST_RIFF_01wb

    #define GST_RIFF_01wb GST_MAKE_FOURCC ('0', '1', 'w', 'b')

### GST_RIFF_02

    #define GST_RIFF_02   GST_MAKE_FOURCC ('0', '2',0x00,0x00)

### GST_RIFF_03

    #define GST_RIFF_03   GST_MAKE_FOURCC ('0', '3',0x00,0x00)

### GST_RIFF_04

    #define GST_RIFF_04   GST_MAKE_FOURCC ('0', '4',0x00,0x00)

### GST_RIFF_05

    #define GST_RIFF_05   GST_MAKE_FOURCC ('0', '5',0x00,0x00)

### GST_RIFF_06

    #define GST_RIFF_06   GST_MAKE_FOURCC ('0', '6',0x00,0x00)

### GST_RIFF_07

    #define GST_RIFF_07   GST_MAKE_FOURCC ('0', '7',0x00,0x00)

### GST_RIFF_AURA

    #define GST_RIFF_AURA GST_MAKE_FOURCC ('A', 'U', 'R', 'A')

### GST_RIFF_BW10

    #define GST_RIFF_BW10 GST_MAKE_FOURCC ('B', 'W', '1', '0')

### GST_RIFF_CCC

    #define GST_RIFF_CCC  GST_MAKE_FOURCC ('C', 'C', 'C', ' ')

### GST_RIFF_CRAM

    #define GST_RIFF_CRAM GST_MAKE_FOURCC ('C', 'R', 'A', 'M')

### GST_RIFF_CVID

    #define GST_RIFF_CVID GST_MAKE_FOURCC ('C', 'V', 'I', 'D')

### GST_RIFF_CYUV

    #define GST_RIFF_CYUV GST_MAKE_FOURCC ('C', 'Y', 'U', 'V')

### GST_RIFF_DIB

    #define GST_RIFF_DIB  GST_MAKE_FOURCC ('D', 'I', 'B', ' ')

### GST_RIFF_DISP

    #define GST_RIFF_DISP GST_MAKE_FOURCC ('D', 'I', 'S', 'P')

### GST_RIFF_DIV3

    #define GST_RIFF_DIV3 GST_MAKE_FOURCC ('D', 'I', 'V', '3')

### GST_RIFF_DMB1

    #define GST_RIFF_DMB1 GST_MAKE_FOURCC ('D', 'M', 'B', '1')

### GST_RIFF_FCCH_MSVC

    #define GST_RIFF_FCCH_MSVC GST_MAKE_FOURCC ('M','S','V','C')

### GST_RIFF_FCCH_RLE

    #define GST_RIFF_FCCH_RLE  GST_MAKE_FOURCC ('R','L','E',' ')

### GST_RIFF_FCCH_msvc

    #define GST_RIFF_FCCH_msvc GST_MAKE_FOURCC ('m','s','v','c')

### GST_RIFF_FCC_auds

    #define GST_RIFF_FCC_auds GST_MAKE_FOURCC ('a','u','d','s')

### GST_RIFF_FCC_iavs

    #define GST_RIFF_FCC_iavs GST_MAKE_FOURCC ('i','a','v','s')

### GST_RIFF_FCC_pads

    #define GST_RIFF_FCC_pads GST_MAKE_FOURCC ('p','a','d','s')

### GST_RIFF_FCC_txts

    #define GST_RIFF_FCC_txts GST_MAKE_FOURCC ('t','x','t','s')

### GST_RIFF_FCC_vidc

    #define GST_RIFF_FCC_vidc GST_MAKE_FOURCC ('v','i','d','c')

### GST_RIFF_FCC_vids

    #define GST_RIFF_FCC_vids GST_MAKE_FOURCC ('v','i','d','s')

### GST_RIFF_FF00

    #define GST_RIFF_FF00 GST_MAKE_FOURCC (0xFF,0xFF,0x00,0x00)

### GST_RIFF_H263

    #define GST_RIFF_H263 GST_MAKE_FOURCC ('H', '2', '6', '3')

### GST_RIFF_I420

    #define GST_RIFF_I420 GST_MAKE_FOURCC ('I', '4', '2', '0')

### GST_RIFF_IDIT

    #define GST_RIFF_IDIT GST_MAKE_FOURCC ('I', 'D', 'I', 'T')

### GST_RIFF_IJPG

    #define GST_RIFF_IJPG GST_MAKE_FOURCC ('I', 'J', 'P', 'G')

### GST_RIFF_INFO_IARL

    #define GST_RIFF_INFO_IARL GST_MAKE_FOURCC ('I','A','R','L') /* location */

### GST_RIFF_INFO_IART

    #define GST_RIFF_INFO_IART GST_MAKE_FOURCC ('I','A','R','T') /* artist */

### GST_RIFF_INFO_ICMS

    #define GST_RIFF_INFO_ICMS GST_MAKE_FOURCC ('I','C','M','S') /* commissioned */

### GST_RIFF_INFO_ICMT

    #define GST_RIFF_INFO_ICMT GST_MAKE_FOURCC ('I','C','M','T') /* comment */

### GST_RIFF_INFO_ICOP

    #define GST_RIFF_INFO_ICOP GST_MAKE_FOURCC ('I','C','O','P') /* copyright */

### GST_RIFF_INFO_ICRD

    #define GST_RIFF_INFO_ICRD GST_MAKE_FOURCC ('I','C','R','D') /* creation date */

### GST_RIFF_INFO_ICRP

    #define GST_RIFF_INFO_ICRP GST_MAKE_FOURCC ('I','C','R','P') /* cropped */

### GST_RIFF_INFO_IDIM

    #define GST_RIFF_INFO_IDIM GST_MAKE_FOURCC ('I','D','I','M') /* dimensions */

### GST_RIFF_INFO_IDPI

    #define GST_RIFF_INFO_IDPI GST_MAKE_FOURCC ('I','D','P','I') /* dots-per-inch */

### GST_RIFF_INFO_IENG

    #define GST_RIFF_INFO_IENG GST_MAKE_FOURCC ('I','E','N','G') /* engineer(s) */

### GST_RIFF_INFO_IGNR

    #define GST_RIFF_INFO_IGNR GST_MAKE_FOURCC ('I','G','N','R') /* genre */

### GST_RIFF_INFO_IKEY

    #define GST_RIFF_INFO_IKEY GST_MAKE_FOURCC ('I','K','E','Y') /* keywords */

### GST_RIFF_INFO_ILGT

    #define GST_RIFF_INFO_ILGT GST_MAKE_FOURCC ('I','L','G','T') /* lightness */

### GST_RIFF_INFO_IMED

    #define GST_RIFF_INFO_IMED GST_MAKE_FOURCC ('I','M','E','D') /* medium */

### GST_RIFF_INFO_INAM

    #define GST_RIFF_INFO_INAM GST_MAKE_FOURCC ('I','N','A','M') /* name */

### GST_RIFF_INFO_IPLT

    #define GST_RIFF_INFO_IPLT GST_MAKE_FOURCC ('I','P','L','T') /* palette setting */

### GST_RIFF_INFO_IPRD

    #define GST_RIFF_INFO_IPRD GST_MAKE_FOURCC ('I','P','R','D') /* product */

### GST_RIFF_INFO_ISBJ

    #define GST_RIFF_INFO_ISBJ GST_MAKE_FOURCC ('I','S','B','J') /* subject */

### GST_RIFF_INFO_ISFT

    #define GST_RIFF_INFO_ISFT GST_MAKE_FOURCC ('I','S','F','T') /* software */

### GST_RIFF_INFO_ISHP

    #define GST_RIFF_INFO_ISHP GST_MAKE_FOURCC ('I','S','H','P') /* sharpness */

### GST_RIFF_INFO_ISRC

    #define GST_RIFF_INFO_ISRC GST_MAKE_FOURCC ('I','S','R','C') /* source */

### GST_RIFF_INFO_ISRF

    #define GST_RIFF_INFO_ISRF GST_MAKE_FOURCC ('I','S','R','F') /* source form */

### GST_RIFF_INFO_ITCH

    #define GST_RIFF_INFO_ITCH GST_MAKE_FOURCC ('I','T','C','H') /* technician(s) */

### GST_RIFF_ISBJ

    #define GST_RIFF_ISBJ GST_MAKE_FOURCC ('I', 'S', 'B', 'J')

### GST_RIFF_ISFT

    #define GST_RIFF_ISFT GST_MAKE_FOURCC ('I', 'S', 'F', 'T')

### GST_RIFF_IV31

    #define GST_RIFF_IV31 GST_MAKE_FOURCC ('I', 'V', '3', '1')

### GST_RIFF_IV32

    #define GST_RIFF_IV32 GST_MAKE_FOURCC ('I', 'V', '3', '2')

### GST_RIFF_IV41

    #define GST_RIFF_IV41 GST_MAKE_FOURCC ('I', 'V', '4', '1')

### GST_RIFF_IV50

    #define GST_RIFF_IV50 GST_MAKE_FOURCC ('I', 'V', '5', '0')

### GST_RIFF_IYUV

    #define GST_RIFF_IYUV GST_MAKE_FOURCC ('I', 'Y', 'U', 'V')

### GST_RIFF_JPEG

    #define GST_RIFF_JPEG GST_MAKE_FOURCC ('J', 'P', 'E', 'G')

### GST_RIFF_L263

    #define GST_RIFF_L263 GST_MAKE_FOURCC ('L', '2', '6', '3')

### GST_RIFF_LIST_AVIX

    #define GST_RIFF_LIST_AVIX GST_MAKE_FOURCC ('A','V','I','X')

### GST_RIFF_LIST_INFO

    #define GST_RIFF_LIST_INFO GST_MAKE_FOURCC ('I','N','F','O')

### GST_RIFF_LIST_adtl

    #define GST_RIFF_LIST_adtl GST_MAKE_FOURCC ('a','d','t','l')

### GST_RIFF_LIST_hdrl

    #define GST_RIFF_LIST_hdrl GST_MAKE_FOURCC ('h','d','r','l')

### GST_RIFF_LIST_movi

    #define GST_RIFF_LIST_movi GST_MAKE_FOURCC ('m','o','v','i')

### GST_RIFF_LIST_odml

    #define GST_RIFF_LIST_odml GST_MAKE_FOURCC ('o','d','m','l')

### GST_RIFF_LIST_strl

    #define GST_RIFF_LIST_strl GST_MAKE_FOURCC ('s','t','r','l')

### GST_RIFF_M263

    #define GST_RIFF_M263 GST_MAKE_FOURCC ('M', '2', '6', '3')

### GST_RIFF_MJPG

    #define GST_RIFF_MJPG GST_MAKE_FOURCC ('M', 'J', 'P', 'G')

### GST_RIFF_MPIX

    #define GST_RIFF_MPIX GST_MAKE_FOURCC (0x04,0x00, 'i', '1')     /* MotionPixels munged their id */

### GST_RIFF_MVI1

    #define GST_RIFF_MVI1 GST_MAKE_FOURCC ('M', 'V', 'I', '1')

### GST_RIFF_NONE

    #define GST_RIFF_NONE GST_MAKE_FOURCC ('N', 'O', 'N', 'E')

### GST_RIFF_PACK

    #define GST_RIFF_PACK GST_MAKE_FOURCC ('P', 'A', 'C', 'K')

### GST_RIFF_Q1_0

    #define GST_RIFF_Q1_0 GST_MAKE_FOURCC ('Q', '1',0x2e, '0')

### GST_RIFF_RAW

    #define GST_RIFF_RAW  GST_MAKE_FOURCC ('R', 'A', 'W', ' ')

### GST_RIFF_RGB

    #define GST_RIFF_RGB  GST_MAKE_FOURCC ('R', 'G', 'B', ' ')

### GST_RIFF_RIFF_AVI

    #define GST_RIFF_RIFF_AVI  GST_MAKE_FOURCC ('A','V','I',' ')

### GST_RIFF_RIFF_CDXA

    #define GST_RIFF_RIFF_CDXA GST_MAKE_FOURCC ('C','D','X','A')

### GST_RIFF_RIFF_WAVE

    #define GST_RIFF_RIFF_WAVE GST_MAKE_FOURCC ('W','A','V','E')

### GST_RIFF_RLE4

    #define GST_RIFF_RLE4 GST_MAKE_FOURCC ('R', 'L', 'E', '4')

### GST_RIFF_RLE8

    #define GST_RIFF_RLE8 GST_MAKE_FOURCC ('R', 'L', 'E', '8')

### GST_RIFF_RT21

    #define GST_RIFF_RT21 GST_MAKE_FOURCC ('R', 'T', '2', '1')

### GST_RIFF_SFMC

    #define GST_RIFF_SFMC GST_MAKE_FOURCC ('S', 'F', 'M', 'C')

### GST_RIFF_TAG_acid

    #define GST_RIFF_TAG_acid GST_MAKE_FOURCC ('a','c','i','d')

### GST_RIFF_TAG_AVF0

    #define GST_RIFF_TAG_AVF0 GST_MAKE_FOURCC ('A','V','F','0')

### GST_RIFF_TAG_BEXT

    #define GST_RIFF_TAG_BEXT GST_MAKE_FOURCC ('B','E','X','T')

### GST_RIFF_TAG_JUNK

    #define GST_RIFF_TAG_JUNK GST_MAKE_FOURCC ('J','U','N','K')

### GST_RIFF_TAG_JUNQ

    #define GST_RIFF_TAG_JUNQ GST_MAKE_FOURCC ('J','U','N','Q')

### GST_RIFF_TAG_LIST

    #define GST_RIFF_TAG_LIST GST_MAKE_FOURCC ('L','I','S','T')

### GST_RIFF_TAG_RIFF

    #define GST_RIFF_TAG_RIFF GST_MAKE_FOURCC ('R','I','F','F')

### GST_RIFF_TAG_RIFX

    #define GST_RIFF_TAG_RIFX GST_MAKE_FOURCC ('R','I','F','X')

### GST_RIFF_TAG_avih

    #define GST_RIFF_TAG_avih GST_MAKE_FOURCC ('a','v','i','h')

### GST_RIFF_TAG_bext

    #define GST_RIFF_TAG_bext GST_MAKE_FOURCC ('b','e','x','t')

### GST_RIFF_TAG_cue

    #define GST_RIFF_TAG_cue  GST_MAKE_FOURCC ('c','u','e',' ')

### GST_RIFF_TAG_data

    #define GST_RIFF_TAG_data GST_MAKE_FOURCC ('d','a','t','a')

### GST_RIFF_TAG_dmlh

    #define GST_RIFF_TAG_dmlh GST_MAKE_FOURCC ('d','m','l','h')

### GST_RIFF_TAG_fact

    #define GST_RIFF_TAG_fact GST_MAKE_FOURCC ('f','a','c','t')

### GST_RIFF_TAG_fmt

    #define GST_RIFF_TAG_fmt  GST_MAKE_FOURCC ('f','m','t',' ')

### GST_RIFF_TAG_idx1

    #define GST_RIFF_TAG_idx1 GST_MAKE_FOURCC ('i','d','x','1')

### GST_RIFF_TAG_plst

    #define GST_RIFF_TAG_plst GST_MAKE_FOURCC ('p','l','s','t')

### GST_RIFF_TAG_strd

    #define GST_RIFF_TAG_strd GST_MAKE_FOURCC ('s','t','r','d')

### GST_RIFF_TAG_strf

    #define GST_RIFF_TAG_strf GST_MAKE_FOURCC ('s','t','r','f')

### GST_RIFF_TAG_strh

    #define GST_RIFF_TAG_strh GST_MAKE_FOURCC ('s','t','r','h')

### GST_RIFF_TAG_strn

    #define GST_RIFF_TAG_strn GST_MAKE_FOURCC ('s','t','r','n')

### GST_RIFF_TAG_vedt

    #define GST_RIFF_TAG_vedt GST_MAKE_FOURCC ('v','e','d','t')

### GST_RIFF_TRAN

    #define GST_RIFF_TRAN GST_MAKE_FOURCC ('T', 'R', 'A', 'N')

### GST_RIFF_ULTI

    #define GST_RIFF_ULTI GST_MAKE_FOURCC ('U', 'L', 'T', 'I')

### GST_RIFF_V422

    #define GST_RIFF_V422 GST_MAKE_FOURCC ('V', '4', '2', '2')

### GST_RIFF_VDOW

    #define GST_RIFF_VDOW GST_MAKE_FOURCC ('V', 'D', 'O', 'W')

### GST_RIFF_VIXL

    #define GST_RIFF_VIXL GST_MAKE_FOURCC ('V', 'I', 'X', 'L')

### GST_RIFF_VSSH

    #define GST_RIFF_VSSH GST_MAKE_FOURCC ( 'V', 'S', 'S', 'H') /* H2.64 */

### GST_RIFF_VYUY

    #define GST_RIFF_VYUY GST_MAKE_FOURCC ('V', 'Y', 'U', 'Y')

### GST_RIFF_WHAM

    #define GST_RIFF_WHAM GST_MAKE_FOURCC ('W', 'H', 'A', 'M')

### GST_RIFF_WINX

    #define GST_RIFF_WINX GST_MAKE_FOURCC ('W', 'I', 'N', 'X')

### GST_RIFF_WPY2

    #define GST_RIFF_WPY2 GST_MAKE_FOURCC ('W', 'P', 'Y', '2')

### GST_RIFF_XMPG

    #define GST_RIFF_XMPG GST_MAKE_FOURCC ('X', 'M', 'P', 'G')

### GST_RIFF_Y41P

    #define GST_RIFF_Y41P GST_MAKE_FOURCC ('Y', '4', '1', 'P')

### GST_RIFF_YUV8

    #define GST_RIFF_YUV8 GST_MAKE_FOURCC ('Y', 'U', 'V', '8')

### GST_RIFF_YUV9

    #define GST_RIFF_YUV9 GST_MAKE_FOURCC ('Y', 'V', 'U', '9')

### GST_RIFF_YUY2

    #define GST_RIFF_YUY2 GST_MAKE_FOURCC ('Y', 'U', 'Y', '2')

### GST_RIFF_YV12

    #define GST_RIFF_YV12 GST_MAKE_FOURCC ('Y', 'V', '1', '2')

### GST_RIFF_YVU9

    #define GST_RIFF_YVU9 GST_MAKE_FOURCC ('Y', 'U', 'V', '9')

### GST_RIFF_azpr

    #define GST_RIFF_azpr GST_MAKE_FOURCC ('a', 'z', 'p', 'r')  /* recognize Apple's rpza mangled? */

### GST_RIFF_bw10

    #define GST_RIFF_bw10 GST_MAKE_FOURCC ('b', 'w', '1', '0')

### GST_RIFF_ccc

    #define GST_RIFF_ccc  GST_MAKE_FOURCC (0x03,0x00,0xFF,0xFF)

### GST_RIFF_cram

    #define GST_RIFF_cram GST_MAKE_FOURCC ('c', 'r', 'a', 'm')

### GST_RIFF_cvid

    #define GST_RIFF_cvid GST_MAKE_FOURCC ('c', 'v', 'i', 'd')

### GST_RIFF_cyuv

    #define GST_RIFF_cyuv GST_MAKE_FOURCC ('c', 'y', 'u', 'v')

### GST_RIFF_dmb1

    #define GST_RIFF_dmb1 GST_MAKE_FOURCC ('d', 'm', 'b', '1')

### GST_RIFF_h263

    #define GST_RIFF_h263 GST_MAKE_FOURCC ('h', '2', '6', '3')

### GST_RIFF_i263

    #define GST_RIFF_i263 GST_MAKE_FOURCC ('i', '2', '6', '3')

### GST_RIFF_i420

    #define GST_RIFF_i420 GST_MAKE_FOURCC ('i', '4', '2', '0')

### GST_RIFF_iv31

    #define GST_RIFF_iv31 GST_MAKE_FOURCC ('i', 'v', '3', '1')

### GST_RIFF_iv32

    #define GST_RIFF_iv32 GST_MAKE_FOURCC ('i', 'v', '3', '2')

### GST_RIFF_iv41

    #define GST_RIFF_iv41 GST_MAKE_FOURCC ('i', 'v', '4', '1')

### GST_RIFF_iv50

    #define GST_RIFF_iv50 GST_MAKE_FOURCC ('i', 'v', '5', '0')

### GST_RIFF_iyuv

    #define GST_RIFF_iyuv GST_MAKE_FOURCC ('i', 'y', 'u', 'v')

### GST_RIFF_jpeg

    #define GST_RIFF_jpeg GST_MAKE_FOURCC (0x04,0x00,0xFF,0xFF)

### GST_RIFF_m263

    #define GST_RIFF_m263 GST_MAKE_FOURCC ('m', '2', '6', '3')

### GST_RIFF_mJPG

    #define GST_RIFF_mJPG GST_MAKE_FOURCC ('m', 'J', 'P', 'G')

### GST_RIFF_mvi1

    #define GST_RIFF_mvi1 GST_MAKE_FOURCC ('m', 'v', 'i', '1')

### GST_RIFF_none

    #define GST_RIFF_none GST_MAKE_FOURCC (0x00,0x00,0xFF,0xFF)

### GST_RIFF_pack

    #define GST_RIFF_pack GST_MAKE_FOURCC (0x01,0x00,0xFF,0xFF)

### GST_RIFF_rec

    #define GST_RIFF_rec  GST_MAKE_FOURCC ('r', 'e', 'c', ' ')

### GST_RIFF_rgb

    #define GST_RIFF_rgb  GST_MAKE_FOURCC (0x00,0x00,0x00,0x00)

### GST_RIFF_rle4

    #define GST_RIFF_rle4 GST_MAKE_FOURCC (0x02,0x00,0x00,0x00)

### GST_RIFF_rle8

    #define GST_RIFF_rle8 GST_MAKE_FOURCC (0x01,0x00,0x00,0x00)

### GST_RIFF_rpza

    #define GST_RIFF_rpza GST_MAKE_FOURCC ('r', 'p', 'z', 'a')

### GST_RIFF_rt21

    #define GST_RIFF_rt21 GST_MAKE_FOURCC ('r', 't', '2', '1')

### GST_RIFF_tran

    #define GST_RIFF_tran GST_MAKE_FOURCC (0x02,0x00,0xFF,0xFF)

### GST_RIFF_ulti

    #define GST_RIFF_ulti GST_MAKE_FOURCC ('u', 'l', 't', 'i')

### GST_RIFF_v422

    #define GST_RIFF_v422 GST_MAKE_FOURCC ('v', '4', '2', '2')

### GST_RIFF_vixl

    #define GST_RIFF_vixl GST_MAKE_FOURCC ('v', 'i', 'x', 'l')

### GST_RIFF_vyuy

    #define GST_RIFF_vyuy GST_MAKE_FOURCC ('v', 'y', 'u', 'y')

### GST_RIFF_wham

    #define GST_RIFF_wham GST_MAKE_FOURCC ('w', 'h', 'a', 'm')

### GST_RIFF_x263

    #define GST_RIFF_x263 GST_MAKE_FOURCC ('x', '2', '6', '3')

### GST_RIFF_xmpg

    #define GST_RIFF_xmpg GST_MAKE_FOURCC ('x', 'm', 'p', 'g')

### GST_RIFF_y41p

    #define GST_RIFF_y41p GST_MAKE_FOURCC ('y', '4', '1', 'p')

### GST_RIFF_yuy2

    #define GST_RIFF_yuy2 GST_MAKE_FOURCC ('y', 'u', 'y', '2')

### GST_RIFF_yv12

    #define GST_RIFF_yv12 GST_MAKE_FOURCC ('y', 'v', '1', '2')

### gst_riff_acid

    typedef struct {
      /* 4 bytes (int)     type of file:
       *  this appears to be a bit mask,however some combinations
       *  are probably impossible and/or qualified as "errors"
       *
       *  0x01 On: One Shot         Off: Loop
       *  0x02 On: Root note is Set Off: No root
       *  0x04 On: Stretch is On,   Off: Strech is OFF
       *  0x08 On: Disk Based       Off: Ram based
       *  0x10 On: ??????????       Off: ????????? (Acidizer puts that ON)
       */
      guint32 loop_type;
      /* 2 bytes (short)      root note
       *  if type 0x10 is OFF : [C,C#,(...),B] -> [0x30 to 0x3B]
       *  if type 0x10 is ON  : [C,C#,(...),B] -> [0x3C to 0x47]
       *  (both types fit on same MIDI pitch albeit different octaves, so who cares)
       */
      guint16 root_note;
      /* 2 bytes (short)      ??? always set to 0x8000
       * 4 bytes (float)      ??? seems to be always 0
       */
      guint16 unknown1;
      gfloat unknown2;
      /* 4 bytes (int)        number of beats
       * 2 bytes (short)      meter denominator   //always 4 in SF/ACID
       * 2 bytes (short)      meter numerator     //always 4 in SF/ACID
       *                      //are we sure about the order?? usually its num/denom
       * 4 bytes (float)      tempo
       */
      guint32 number_of_beats;
      guint16 meter_d, meter_n;
      gfloat tempo;
    } gst_riff_acid;

### gst_riff_create_audio_caps ()

    GstCaps *           gst_riff_create_audio_caps          (guint16 codec_id,
                                                             gst_riff_strh *strh,
                                                             gst_riff_strf_auds *strf,
                                                             GstBuffer *strf_data,
                                                             GstBuffer *strd_data,
                                                             char **codec_name);

### gst_riff_create_audio_template_caps ()

    GstCaps *           gst_riff_create_audio_template_caps (void);

### gst_riff_create_iavs_caps ()

    GstCaps *           gst_riff_create_iavs_caps           (guint32 codec_fcc,
                                                             gst_riff_strh *strh,
                                                             gst_riff_strf_iavs *strf,
                                                             GstBuffer *strf_data,
                                                             GstBuffer *strd_data,
                                                             char **codec_name);

### gst_riff_create_iavs_template_caps ()

    GstCaps *           gst_riff_create_iavs_template_caps  (void);

### gst_riff_create_video_caps ()

    GstCaps *           gst_riff_create_video_caps          (guint32 codec_fcc,
                                                             gst_riff_strh *strh,
                                                             gst_riff_strf_vids *strf,
                                                             GstBuffer *strf_data,
                                                             GstBuffer *strd_data,
                                                             char **codec_name);

`codec_fcc` : | fourCC codec for this codec.
`strh` : | pointer to the strh stream header structure.
`strf` : | pointer to the strf stream header structure, including any data that is within the range of strf.size, but excluding any additional data withint this chunk but outside strf.size.
`strf_data` : | a GstBuffer containing the additional data in the strf chunk outside reach of strf.size. Ususally a palette.
`strd_data` : | a GstBuffer containing the data in the strd stream header chunk. Usually codec initialization data.
`codec_name` : | if given, will be filled with a human-readable codec name.

### gst_riff_create_video_template_caps ()

    GstCaps *           gst_riff_create_video_template_caps (void);

### gst_riff_dmlh

    typedef struct {
      guint32 totalframes;
    } gst_riff_dmlh;

### gst_riff_index_entry

    typedef struct {
      guint32 id;
      guint32 flags;
    #define GST_RIFF_IF_LIST                (0x00000001L)
    #define GST_RIFF_IF_KEYFRAME            (0x00000010L)
    #define GST_RIFF_IF_NO_TIME             (0x00000100L)
    #define GST_RIFF_IF_COMPUSE             (0x0FFF0000L)
      guint32 offset;
      guint32 size;
    } gst_riff_index_entry;

### gst_riff_init ()

    void                gst_riff_init                       (void);

Initialize riff library.

### gst_riff_parse_chunk ()

    gboolean            gst_riff_parse_chunk                (GstElement *element,
                                                             GstBuffer *buf,
                                                             guint *offset,
                                                             guint32 *fourcc,
                                                             GstBuffer **chunk_data);

Reads a single chunk.

`element` : | caller element (used for debugging).
`buf` : | input buffer.
`offset` : | offset in the buffer in the caller. Is incremented by the read size by this function.
`fourcc` : | fourcc (returned by this function0 of the chunk.
`chunk_data` : | buffer (returned by the function) containing the chunk data, which may be NULL if chunksize == 0
Returns : | FALSE on error, TRUE otherwise

### gst_riff_parse_file_header ()

    gboolean            gst_riff_parse_file_header          (GstElement *element,
                                                             GstBuffer *buf,
                                                             guint32 *doctype);

Reads the first few bytes from the provided buffer, checks if this stream is a RIFF stream, and determines document type. This function takes ownership of `buf` so it should not be used anymore after calling this function.

`element` : | caller element (used for debugging/error).
`buf` : | input buffer from which the file header will be parsed, should be at least 12 bytes long.
`doctype` : | a fourcc (returned by this function) to indicate the type of document (according to the header).
Returns : | FALSE if this is not a RIFF stream (in which case the caller should error out; we already throw an error), or TRUE if it is.

### gst_riff_parse_info ()

    void                gst_riff_parse_info                 (GstElement *element,
                                                             GstBuffer *buf,
                                                             GstTagList **taglist);

Parses stream metadata from input data.

`element` : | caller element (used for debugging/error).
`buf` : | input data to be used for parsing, stripped from header.
`taglist` : | a pointer to a taglist (returned by this function) containing information about this stream. May be NULL if no supported tags were found.

### gst_riff_parse_strf_auds ()

    gboolean            gst_riff_parse_strf_auds            (GstElement *element,
                                                             GstBuffer *buf,
                                                             gst_riff_strf_auds **strf,
                                                             GstBuffer **data);

Parses an audio stream´s strf structure plus optionally some extradata from input data. This function takes ownership of `buf`. use.

`element` : | caller element (used for debugging/error).
`buf` : | input data to be used for parsing, stripped from header.
`strf` : | a pointer (returned by this function) to a filled-in strf/auds structure. Caller should free it.
`data` : | a pointer (returned by this function) to a buffer containing extradata for this particular stream (e.g. codec initialization data).
Returns : | TRUE if parsing succeeded, otherwise FALSE. The stream should be skipped on error, but it is not fatal.

### gst_riff_parse_strf_iavs ()

    gboolean            gst_riff_parse_strf_iavs            (GstElement *element,
                                                             GstBuffer *buf,
                                                             gst_riff_strf_iavs **strf,
                                                             GstBuffer **data);

Parses a interleaved (also known as "complex") stream´s strf structure plus optionally some extradata from input data. This function takes ownership of `buf`.

`element` : | caller element (used for debugging/error).
`buf` : | input data to be used for parsing, stripped from header.
`strf` : | a pointer (returned by this function) to a filled-in strf/iavs structure. Caller should free it.
`data` : | a pointer (returned by this function) to a buffer containing extradata for this particular stream (e.g. codec initialization data).
Returns : | TRUE if parsing succeeded, otherwise FALSE.

### gst_riff_parse_strf_vids ()

    gboolean            gst_riff_parse_strf_vids            (GstElement *element,
                                                             GstBuffer *buf,
                                                             gst_riff_strf_vids **strf,
                                                             GstBuffer **data);

Parses a video stream´s strf structure plus optionally some extradata from input data. This function takes ownership of `buf`.

`element` : | caller element (used for debugging/error).
`buf` : | input data to be used for parsing, stripped from header.
`strf` : | a pointer (returned by this function) to a filled-in strf/vids structure. Caller should free it.
`data` : | a pointer (returned by this function) to a buffer containing extradata for this particular stream (e.g. palette, codec initialization data).
Returns : | TRUE if parsing succeeded, otherwise FALSE. The stream should be skipped on error, but it is not fatal.

### gst_riff_parse_strh ()

    gboolean            gst_riff_parse_strh                 (GstElement *element,
                                                             GstBuffer *buf,
                                                             gst_riff_strh **strh);

Parses a strh structure from input data. Takes ownership of `buf`.

`element` : | caller element (used for debugging/error).
`buf` : | input data to be used for parsing, stripped from header.
`strh` : | a pointer (returned by this function) to a filled-in strh structure. Caller should free it.
Returns : | TRUE if parsing succeeded, otherwise FALSE. The stream should be skipped on error, but it is not fatal.

### gst_riff_read_chunk ()

    GstFlowReturn       gst_riff_read_chunk                 (GstElement *element,
                                                             GstPad *pad,
                                                             guint64 *offset,
                                                             guint32 *tag,
                                                             GstBuffer **chunk_data);

Reads a single chunk of data. Since 0.10.8 'JUNK' chunks are skipped automatically.

`element` : | caller element (used for debugging).
`pad` : | pad to pull data from.
`offset` : | offset to pull from, incremented by this function.
`tag` : | fourcc of the chunk (returned by this function).
`chunk_data` : | buffer (returned by this function).
Returns : | flow status.

### gst_riff_strf_auds

    typedef struct {
           /* == WaveHeader (?) */
      guint16 format;
    /**** from public Microsoft RIFF docs ******/
    #define GST_RIFF_WAVE_FORMAT_UNKNOWN        (0x0000)
    #define GST_RIFF_WAVE_FORMAT_PCM            (0x0001)
    #define GST_RIFF_WAVE_FORMAT_ADPCM          (0x0002)
    #define GST_RIFF_WAVE_FORMAT_IEEE_FLOAT     (0x0003)
    #define GST_RIFF_WAVE_FORMAT_VSELP          (0x0004)
    #define GST_RIFF_WAVE_FORMAT_IBM_CVSD       (0x0005)
    #define GST_RIFF_WAVE_FORMAT_ALAW           (0x0006)
    #define GST_RIFF_WAVE_FORMAT_MULAW          (0x0007)
    #define GST_RIFF_WAVE_FORMAT_WMS            (0x000a) /* WMS Windows Media Audio Speech */
    #define GST_RIFF_WAVE_FORMAT_OKI_ADPCM      (0x0010)
    #define GST_RIFF_WAVE_FORMAT_DVI_ADPCM      (0x0011)
    #define GST_RIFF_WAVE_FORMAT_MEDIASPACE_ADPCM (0x0012)
    #define GST_RIFF_WAVE_FORMAT_SIERRA_ADPCM   (0x0013)
    #define GST_RIFF_WAVE_FORMAT_G723_ADPCM     (0x0014)
    #define GST_RIFF_WAVE_FORMAT_DIGISTD        (0x0015)
    #define GST_RIFF_WAVE_FORMAT_DIGIFIX        (0x0016)
    #define GST_RIFF_WAVE_FORMAT_DIALOGIC_OKI_ADPCM (0x0017)
    #define GST_RIFF_WAVE_FORMAT_MEDIAVISION_ADPCM  (0x0018)
    #define GST_RIFF_WAVE_FORMAT_CU_CODEC       (0x0019)
    #define GST_RIFF_WAVE_FORMAT_YAMAHA_ADPCM   (0x0020)
    #define GST_RIFF_WAVE_FORMAT_SONARC         (0x0021)
    #define GST_RIFF_WAVE_FORMAT_DSP_TRUESPEECH (0x0022)
    #define GST_RIFF_WAVE_FORMAT_ECHOSC1        (0x0023)
    #define GST_RIFF_WAVE_FORMAT_AUDIOFILE_AF36 (0x0024)
    #define GST_RIFF_WAVE_FORMAT_APTX           (0x0025)
    #define GST_RIFF_WAVE_FORMAT_AUDIOFILE_AF10 (0x0026)
    #define GST_RIFF_WAVE_FORMAT_PROSODY_1612   (0x0027)
    #define GST_RIFF_WAVE_FORMAT_LRC            (0x0028)
    #define GST_RIFF_WAVE_FORMAT_DOLBY_AC2      (0x0030)
    #define GST_RIFF_WAVE_FORMAT_GSM610         (0x0031)
    #define GST_RIFF_WAVE_FORMAT_MSN            (0x0032)
    #define GST_RIFF_WAVE_FORMAT_ANTEX_ADPCME   (0x0033
    #define GST_RIFF_WAVE_FORMAT_CONTROL_RES_VQLPC (0x0034)
    #define GST_RIFF_WAVE_FORMAT_DIGIREAL       (0x0035)
    #define GST_RIFF_WAVE_FORMAT_DIGIADPCM      (0x0036)
    #define GST_RIFF_WAVE_FORMAT_CONTROL_RES_CR10  (0x0037)
    #define GST_RIFF_WAVE_FORMAT_NMS_VBXADPCM   (0x0038)
    #define GST_RIFF_WAVE_FORMAT_CS_IMAADPCM    (0x0039)
    #define GST_RIFF_WAVE_FORMAT_ECHOSC3        (0x003A)
    #define GST_RIFF_WAVE_FORMAT_ROCKWELL_ADPCM (0x003B)
    #define GST_RIFF_WAVE_FORMAT_ROCKWELL_DIGITALK (0x003C)
    #define GST_RIFF_WAVE_FORMAT_XEBEC          (0x003D)
    #define GST_RIFF_WAVE_FORMAT_ITU_G721_ADPCM (0x0040)
    #define GST_RIFF_WAVE_FORMAT_G728_CELP      (0x0041)
    #define GST_RIFF_WAVE_FORMAT_MSG723         (0x0042)
    #define GST_RIFF_WAVE_FORMAT_MPEGL12        (0x0050)
    #define GST_RIFF_WAVE_FORMAT_RT24           (0x0052)
    #define GST_RIFF_WAVE_FORMAT_PAC            (0x0053)
    #define GST_RIFF_WAVE_FORMAT_MPEGL3         (0x0055)
    #define GST_RIFF_WAVE_FORMAT_AMR_NB         (0x0057)
    #define GST_RIFF_WAVE_FORMAT_AMR_WB         (0x0058)
    #define GST_RIFF_WAVE_FORMAT_LUCENT_G723    (0x0059)
    #define GST_RIFF_WAVE_FORMAT_CIRRUS         (0x0060)
    #define GST_RIFF_WAVE_FORMAT_ADPCM_IMA_DK4  (0x0061)  /* not official */
    #define GST_RIFF_WAVE_FORMAT_ADPCM_IMA_DK3  (0x0062)  /* not official */
    /* FIXME: where are these from? are they used at all? */
    #if 0
    #define GST_RIFF_WAVE_FORMAT_ESPCM          (0x0061)
    #define GST_RIFF_WAVE_FORMAT_VOXWARE        (0x0062)
    #endif
    #define GST_RIFF_WAVE_FORMAT_CANOPUS_ATRAC  (0x0063)
    #define GST_RIFF_WAVE_FORMAT_G726_ADPCM     (0x0064)
    #define GST_RIFF_WAVE_FORMAT_G722_ADPCM     (0x0065)
    #define GST_RIFF_WAVE_FORMAT_DSAT_DISPLAY   (0x0067)
    #define GST_RIFF_WAVE_FORMAT_ADPCM_IMA_WAV (0x0069)
    /* FIXME: where are these from? are they used at all? */
    #if 0
    #define GST_RIFF_WAVE_FORMAT_VOXWARE_BYTE_ALIGNED (0x0069)
    #endif
    #define GST_RIFF_WAVE_FORMAT_VOXWARE_AC8    (0x0070)
    #define GST_RIFF_WAVE_FORMAT_VOXWARE_AC10   (0x0071)
    #define GST_RIFF_WAVE_FORMAT_VOXWARE_AC16   (0x0072)
    #define GST_RIFF_WAVE_FORMAT_VOXWARE_AC20   (0x0073)
    #define GST_RIFF_WAVE_FORMAT_VOXWARE_METAVOICE (0x0074)
    #define GST_RIFF_WAVE_FORMAT_VOXWARE_METASOUND (0x0075)
    #define GST_RIFF_WAVE_FORMAT_VOXWARE_RT29HW (0x0076)
    #define GST_RIFF_WAVE_FORMAT_VOXWARE_VR12   (0x0077)
    #define GST_RIFF_WAVE_FORMAT_VOXWARE_VR18   (0x0078)
    #define GST_RIFF_WAVE_FORMAT_VOXWARE_TQ40   (0x0079)
    #define GST_RIFF_WAVE_FORMAT_SOFTSOUND      (0x0080)
    #define GST_RIFF_WAVE_FORMAT_VOXWARE_TQ60   (0x0081)
    #define GST_RIFF_WAVE_FORMAT_MSRT24         (0x0082)
    #define GST_RIFF_WAVE_FORMAT_G729A          (0x0083)
    #define GST_RIFF_WAVE_FORMAT_MVI_MVI2       (0x0084)
    #define GST_RIFF_WAVE_FORMAT_DF_G726        (0x0085)
    #define GST_RIFF_WAVE_FORMAT_DF_GSM610      (0x0086)
    #define GST_RIFF_WAVE_FORMAT_ISIAUDIO       (0x0088)
    #define GST_RIFF_WAVE_FORMAT_ONLIVE         (0x0089)
    #define GST_RIFF_WAVE_FORMAT_SBC24          (0x0091)
    #define GST_RIFF_WAVE_FORMAT_DOLBY_AC3_SPDIF  (0x0092)
    #define GST_RIFF_WAVE_FORMAT_MEDIASONIC_G723  (0x0093)
    #define GST_RIFF_WAVE_FORMAT_PROSODY_8KBPS  (0x0094)
    #define GST_RIFF_WAVE_FORMAT_ZYXEL_ADPCM    (0x0097)
    #define GST_RIFF_WAVE_FORMAT_PHILIPS_LPCBB  (0x0098)
    #define GST_RIFF_WAVE_FORMAT_PACKED         (0x0099)
    #define GST_RIFF_WAVE_FORMAT_MALDEN_PHONYTALK (0x00A0)
    #define GST_RIFF_WAVE_FORMAT_AAC            (0x00ff)
    #define GST_RIFF_WAVE_FORMAT_RHETOREX_ADPCM (0x0100)
    #define GST_RIFF_IBM_FORMAT_MULAW           (0x0101)
    #define GST_RIFF_IBM_FORMAT_ALAW            (0x0102)
    #define GST_RIFF_IBM_FORMAT_ADPCM           (0x0103)
    #define GST_RIFF_WAVE_FORMAT_VIVO_G723      (0x0111)
    #define GST_RIFF_WAVE_FORMAT_VIVO_SIREN     (0x0112)
    #define GST_RIFF_WAVE_FORMAT_DIGITAL_G723   (0x0123)
    #define GST_RIFF_WAVE_FORMAT_SANYO_LD_ADPCM (0x0125)
    #define GST_RIFF_WAVE_FORMAT_SIPROLAB_ACEPLNET  (0x0130)
    #define GST_RIFF_WAVE_FORMAT_SIPROLAB_ACELP4800 (0x0131)
    #define GST_RIFF_WAVE_FORMAT_SIPROLAB_ACELP8V3  (0x0132)
    #define GST_RIFF_WAVE_FORMAT_SIPROLAB_G729   (0x0133)
    #define GST_RIFF_WAVE_FORMAT_SIPROLAB_G729A  (0x0134)
    #define GST_RIFF_WAVE_FORMAT_SIPROLAB_KELVIN (0x0135)
    #define GST_RIFF_WAVE_FORMAT_G726ADPCM       (0x0140)
    #define GST_RIFF_WAVE_FORMAT_QUALCOMM_PUREVOICE (0x0150)
    #define GST_RIFF_WAVE_FORMAT_QUALCOMM_HALFRATE  (0x0151)
    #define GST_RIFF_WAVE_FORMAT_TUBGSM             (0x0155)
    #define GST_RIFF_WAVE_FORMAT_WMAV1          (0x0160)
    #define GST_RIFF_WAVE_FORMAT_WMAV2          (0x0161)
    #define GST_RIFF_WAVE_FORMAT_WMAV3          (0x0162)
    #define GST_RIFF_WAVE_FORMAT_WMAV3_L        (0x0163)
    #define GST_RIFF_WAVE_FORMAT_CREATIVE_ADPCM (0x0200)
    #define GST_RIFF_WAVE_FORMAT_CREATIVE_FASTSPEECH8  (0x0202)
    #define GST_RIFF_WAVE_FORMAT_CREATIVE_FASTSPEECH10 (0x0203)
    #define GST_RIFF_WAVE_FORMAT_UHER_ADPCM     (0x0210)
    #define GST_RIFF_WAVE_FORMAT_QUARTERDECK    (0x0220)
    #define GST_RIFF_WAVE_FORMAT_ILINK_VC       (0x0230)
    #define GST_RIFF_WAVE_FORMAT_RAW_SPORT      (0x0240)
    #define GST_RIFF_WAVE_FORMAT_IPI_HSX        (0x0250)
    #define GST_RIFF_WAVE_FORMAT_IPI_RPELP      (0x0251)
    #define GST_RIFF_WAVE_FORMAT_CS2            (0x0260)
    #define GST_RIFF_WAVE_FORMAT_SONY_ATRAC3    (0x0270)
    #define GST_RIFF_WAVE_FORMAT_SIREN          (0x028E)
    #define GST_RIFF_WAVE_FORMAT_FM_TOWNS_SND   (0x0300)
    #define GST_RIFF_WAVE_FORMAT_BTV_DIGITAL    (0x0400)
    #define GST_RIFF_WAVE_FORMAT_IMC            (0x0401)
    #define GST_RIFF_WAVE_FORMAT_QDESIGN_MUSIC  (0x0450)
    #define GST_RIFF_WAVE_FORMAT_VME_VMPCM      (0x0680)
    #define GST_RIFF_WAVE_FORMAT_TPC            (0x0681)
    #define GST_RIFF_WAVE_FORMAT_OLIGSM         (0x1000)
    #define GST_RIFF_WAVE_FORMAT_OLIADPCM       (0x1001)
    #define GST_RIFF_WAVE_FORMAT_OLICELP        (0x1002)
    #define GST_RIFF_WAVE_FORMAT_OLISBC         (0x1003)
    #define GST_RIFF_WAVE_FORMAT_OLIOPR         (0x1004)
    #define GST_RIFF_WAVE_FORMAT_LH_CODEC       (0x1100)
    #define GST_RIFF_WAVE_FORMAT_NORRIS         (0x1400)
    #define GST_RIFF_WAVE_FORMAT_SOUNDSPACE_MUSICOMPRESS (0x1500)
    #define GST_RIFF_WAVE_FORMAT_A52            (0x2000)
    #define GST_RIFF_WAVE_FORMAT_DTS            (0x2001)
    #define GST_RIFF_WAVE_FORMAT_SONIC          (0x2048)
    #define GST_RIFF_WAVE_FORMAT_SONIC_LS       (0x2048)
    #define GST_RIFF_WAVE_FORMAT_AAC_AC         (0x4143)
    #define GST_RIFF_WAVE_FORMAT_VORBIS1        (0x674f)
    #define GST_RIFF_WAVE_FORMAT_VORBIS2        (0x6750)
    #define GST_RIFF_WAVE_FORMAT_VORBIS3        (0x6751)
    #define GST_RIFF_WAVE_FORMAT_VORBIS1PLUS    (0x676f)
    #define GST_RIFF_WAVE_FORMAT_VORBIS2PLUS    (0x6770)
    #define GST_RIFF_WAVE_FORMAT_VORBIS3PLUS    (0x6771)
    #define GST_RIFF_WAVE_FORMAT_AAC_pm         (0x706d)
    #define GST_RIFF_WAVE_FORMAT_GSM_AMR_CBR    (0x7A21)
    #define GST_RIFF_WAVE_FORMAT_GSM_AMR_VBR    (0x7A22)
    #define GST_RIFF_WAVE_FORMAT_FLAC           (0xF1AC)
    #define GST_RIFF_WAVE_FORMAT_EXTENSIBLE     (0xFFFE)
      guint16 channels;
      guint32 rate;
      guint32 av_bps;
      guint16 blockalign;
    #if 0
      /* missing field: */
      guint16 bits_per_sample;
    #endif
      guint16 size;
    } gst_riff_strf_auds;

### gst_riff_strf_iavs

    typedef struct {
      guint32 DVAAuxSrc;
      guint32 DVAAuxCtl;
      guint32 DVAAuxSrc1;
      guint32 DVAAuxCtl1;
      guint32 DVVAuxSrc;
      guint32 DVVAuxCtl;
      guint32 DVReserved1;
      guint32 DVReserved2;
    } gst_riff_strf_iavs;

### gst_riff_strf_vids

    typedef struct {
           /* == BitMapInfoHeader */
      guint32 size;
      guint32 width;
      guint32 height;
      guint16 planes;
      guint16 bit_cnt;
      guint32 compression;
      guint32 image_size;
      guint32 xpels_meter;
      guint32 ypels_meter;
      guint32 num_colors;        /* used colors */
      guint32 imp_colors;        /* important colors */
      /* may be more for some codecs */
    } gst_riff_strf_vids;

### gst_riff_strh

    typedef struct {
      guint32 type;             /* stream type */
      guint32 fcc_handler;       /* fcc_handler */
      guint32 flags;
    /* flags values */
    #define GST_RIFF_STRH_DISABLED        0x000000001
    #define GST_RIFF_STRH_VIDEOPALCHANGES 0x000010000
      guint32 priority;
      guint32 init_frames;       /* initial frames (???) */
      guint32 scale;
      guint32 rate;
      guint32 start;
      guint32 length;
      guint32 bufsize;           /* suggested buffer size */
      guint32 quality;
      guint32 samplesize;
      /* rcFrame, RECT structure(struct of 4 shorts)
      gint32  left;
      gint32  top;
      gint32  right;
      gint32  bottom;
      */
    } gst_riff_strh;