OSDN Git Service

roastメインリポジトリから移動してきたのよ
authorMyun2 <myun2@nwhite.info>
Thu, 3 May 2012 13:40:25 +0000 (22:40 +0900)
committerMyun2 <myun2@nwhite.info>
Thu, 3 May 2012 13:40:25 +0000 (22:40 +0900)
roast_riff.h [new file with mode: 0644]
roast_wave_file.h [new file with mode: 0644]
roast_wave_file_format.h [new file with mode: 0644]

diff --git a/roast_riff.h b/roast_riff.h
new file mode 100644 (file)
index 0000000..14575e3
--- /dev/null
@@ -0,0 +1,130 @@
+/*     Roast+ License
+
+//     ### C compilable ###
+
+//     WAVE File Format Header
+*/
+#ifndef __SFJP_ROAST_roast_riff_H__
+#define __SFJP_ROAST_roast_riff_H__
+
+#include <stdio.h>                     /*      FILE    */
+#include "roast_common.h"      /*      ROAST_BOOL      */
+
+
+/*typedef unsigned long roast_ul32;*/
+
+
+/*------------------------------------*/
+/*  RIFF Chunk Header                 */
+/*------------------------------------*/
+typedef struct
+{
+       char chunk_name[4];                                     /*  "RIFF", "WAVE", "AVI ", "LIST" ...  */
+       unsigned long chunk_size;                       /*  Chunk Size  */
+       
+} ROAST_RIFF_CHUNK_HEADER;
+
+
+
+/*------------------------------------*/
+/*  RIFF Header                       */
+/*------------------------------------*/
+typedef struct
+{
+       char riff_fix_str[4];                           /*  "RIFF" Fix String  */
+       unsigned long riff_size;                        /*  RIFF Size (After the this item length. = File Size-8)  */
+       char riff_form_type[4];                         /*  Form Type.  e.g.) "WAVE", "AVI " ...  */
+       
+/*} ROAST_WAVE_FILE_FORMAT_RIFF_HEADER;*/
+} ROAST_RIFF_HEADER;
+
+#define ROAST_RIFF_FIX_STRING          "RIFF"
+#define ROAST_RIFF_LIST_STRING         "LIST"
+#define ROAST_RIFF_FORM_TYPE_LIST      "LIST"
+#define ROAST_RIFF_FORM_TYPE_WAVE      "WAVE"
+#define ROAST_RIFF_FORM_TYPE_AVI       "AVI "
+
+
+
+/* === Functions ===================== */
+
+__ROAST_EXTERN_C_START
+
+
+
+
+ROAST_BOOL roast_riff_fseek_RIFF_header( FILE* fp );
+
+ROAST_BOOL roast_riff_read_RIFF_header( const char* filename, ROAST_RIFF_HEADER* p_riff_out );
+ROAST_BOOL roast_riff_read_RIFF_header_fp( FILE* fp, ROAST_RIFF_HEADER* p_riff_out );  /*      fp : Require! File Pointer Setted SEEK_SET 0. */
+
+/*ROAST_BOOL roast_read_riff_chunk( const char* filename, ROAST_RIFF_CHUNK_HEADER* p_parent_chunk,
+       const char* chunk_name, void* p_chunk_out, unsigned int chunk_bufsize );*/
+ROAST_BOOL roast_riff_read_chunk_fp( FILE* fp, ROAST_RIFF_CHUNK_HEADER* p_parent_chunk,
+       const char* chunk_name, void* p_chunk_out, unsigned int chunk_bufsize );        /*      fp : Require! File Pointer Setted SEEK_SET 0. */
+
+
+
+
+
+/*     RIFF Read Chunk Header (File Pointer Specify)   */
+/*
+       * fp : Require! File Pointer Setted Chunk Header.
+*/
+ROAST_RIFF_CHUNK_HEADER* roast_riff_read_chunk_header_fp( FILE* fp, ROAST_RIFF_CHUNK_HEADER* p_chunk_out );
+
+/*     RIFF Next Chunk Header (File Pointer Specify)   */
+/*
+       * fp : Require! File Pointer Setted Chunk Body.
+*/
+ROAST_RIFF_CHUNK_HEADER* roast_riff_next_chunk_header_fp( FILE* fp, ROAST_RIFF_CHUNK_HEADER* p_parent_chunk, ROAST_RIFF_CHUNK_HEADER* p_chunk_out );
+
+/*     Read RIFF Chunk Header (File Pointer Specify)   */
+/*
+       * fp : Require! File Pointer Setted Chunk Header.
+*/
+ROAST_BOOL roast_riff_find_chunk_header_fp( FILE* fp, ROAST_RIFF_CHUNK_HEADER* p_parent_chunk,
+       const char* chunk_name, ROAST_RIFF_CHUNK_HEADER* p_chunk_header_out );
+
+/*     Read RIFF Chunk Body (File Pointer Specify)     */
+/*
+       * fp : Require! File Pointer Setted Chunk Body.
+*/
+ROAST_BOOL roast_riff_read_chunk_body_fp( FILE* fp, ROAST_RIFF_CHUNK_HEADER* p_chunk_header, void* p_body_out );
+#define roast_riff_read_chunk_data_fp roast_riff_read_chunk_body_fp
+
+
+
+
+ROAST_RIFF_HEADER* roast_riff_create_chunk( ROAST_RIFF_HEADER* buf, unsigned long riff_size, const char* form_type );
+
+
+
+
+
+__ROAST_EXTERN_C_END
+
+
+
+
+/* === errno ============================ */
+
+/*     RIFF: Chunk Header Read Failed. (fread() return error)  */
+#define ROAST_RIFF_ERRNO_RIFF_HEADER_READ_FAILED                       (ROAST_ERRNO__RIFF_START + 0x0060)
+
+
+
+/* --- RIFF --- */
+
+/*     RIFF: RIFF Header fseek() Failed.       */
+#define ROAST_RIFF_ERRNO_RIFF_FSEEK_FAILED                                     (ROAST_ERRNO__RIFF_START + 0x0110)
+
+/*     RIFF: RIFF Header Read Failed. (fread() return error)   */
+#define ROAST_RIFF_ERRNO_RIFF_RIFF_HEADER_READ_FAILED          (ROAST_ERRNO__RIFF_START + 0x0120)
+
+/*     RIFF: RIFF Header Invalid. (Chunk Name was not "RIFF")  */
+#define ROAST_RIFF_ERRNO_RIFF_RIFF_HEADER_INVALID                      (ROAST_ERRNO__RIFF_START + 0x0121)
+
+
+
+#endif/*__SFJP_ROAST_roast_riff_H__*/
diff --git a/roast_wave_file.h b/roast_wave_file.h
new file mode 100644 (file)
index 0000000..9a0b564
--- /dev/null
@@ -0,0 +1,47 @@
+/*     Roast+ License
+
+//     ### C compilable ###
+
+//     \83t\83@\83C\83\8b\8cn\8aÖ\90\94
+*/
+#ifndef __SFJP_OPENMGL_roast_wave_file_H__
+#define __SFJP_OPENMGL_roast_wave_file_H__
+
+#include "roast_common.h"
+#include "roast_file.h"
+
+#include "roast_wave_file_format.h"
+
+#include <stdio.h>
+
+
+/*=============================================================================*/
+
+
+__ROAST_EXTERN_C_START
+
+
+/* === PCM Wave ===================== */
+
+#define ROAST_READ_PCM_WAVE_PART_RIFF_HEADER   (0x00000010)
+#define ROAST_READ_PCM_WAVE_PART_FMT_HEADER            (0x00000100)
+#define ROAST_READ_PCM_WAVE_PART_FMT_BODY              (0x00000200)
+#define ROAST_READ_PCM_WAVE_PART_DATA_HEADER   (0x00001000)
+#define ROAST_READ_PCM_WAVE_PART_DATA_BODY             (0x00008000)
+
+
+/*ROAST_BOOL roast_read_wave_file( const char* filename, ROAST_PCM_WAVEFILE* p_out );*/
+ROAST_PCM_WAVEFILE* roast_read_pcm_wave_file( const char* filename );
+
+ROAST_BOOL roast_part_read_pcm_wave_file( const char* filename, int part_flags, ROAST_PCM_WAVEFILE *p_buf );
+ROAST_BOOL roast_part_read_pcm_wave_file_fp( FILE* fp, int part_flags, ROAST_PCM_WAVEFILE *p_buf );
+
+void roast_free_pcm_wave_file( ROAST_PCM_WAVEFILE* p_wavefile );
+
+
+
+__ROAST_EXTERN_C_END
+
+
+
+#endif/*__SFJP_OPENMGL_roast_wave_file_H__*/
diff --git a/roast_wave_file_format.h b/roast_wave_file_format.h
new file mode 100644 (file)
index 0000000..cd9e9a0
--- /dev/null
@@ -0,0 +1,74 @@
+/*     Roast+ License
+
+//     ### C compilable ###
+
+//     WAVE File Format Header
+*/
+#ifndef __SFJP_OPENMGL_roast_wave_file_format_H__
+#define __SFJP_OPENMGL_roast_wave_file_format_H__
+
+#include "roast_riff.h"
+
+
+/*------------------------------------*/
+/*  WAVE "fmt" Header                 */
+/*------------------------------------*/
+typedef struct
+{
+       char fmt_fix_str[4];                            /*  "fmt " Fix String (Include Space!)                  */
+       unsigned long fmt_size;                         /*  fmt Size  */
+       
+       /*void* WAVEfmt_data;*/
+       unsigned short usFormatType;            /*  PCM:1                                                                               */
+       unsigned short usChannels;                      /*  Mono:1 / Streo:2                                                    */
+       unsigned long  ulSampleRate;            /*  Sample Per Second. = 11025, 22050, 44100..  */
+       unsigned long  ulBytesPerSec;           /*  ulSamplesPerSec * usChannels * usBit/8              */
+       unsigned short usBytePerSample;         /*  block size of data (usBit/8 * usChannels)   */
+       unsigned short usSampleBit;                     /*  Sample Bit. 8, 16, 24...                                    */
+       
+       /*unsigned short usExtendSize;*/        /*  Extend Data Size -> Not PCM Only...                 */
+       
+/*} ROAST_WAVE_FILE_FORMAT_WAVEFMT_HEADER;*/
+} ROAST_WAVE_FMT_HEADER;
+
+#define ROAST_WAVEFILE_FMT_FIX_STRING                  "fmt "
+#define ROAST_WAVEFILE_CHUNK_NAME_FMT                  ROAST_WAVEFILE_FMT_FIX_STRING
+
+#define ROAST_WAVEFMT_FORMAT_TYPE_PCM                  (1)
+
+#define ROAST_WAVEFMT_PCM_CHANNELS_MONO                        (1)
+#define ROAST_WAVEFMT_PCM_CHANNELS_STEREO              (2)
+
+
+
+/*------------------------------------*/
+/*  WAVE "data" Header                */
+/*------------------------------------*/
+typedef struct
+{
+       char data_fix_str[4];                           /*  "data" Fix String  */
+       unsigned long data_size;                        /*  data Size  */
+       
+} ROAST_WAVE_DATA_HEADER;
+
+#define ROAST_WAVEFILE_DATA_FIX_STRING         "data"
+
+
+
+/**************************************/
+/*  PCM WAVE File Format              */
+/**************************************/
+typedef struct
+{
+       ROAST_RIFF_HEADER riff;                         /*      RIFF Header     */
+       ROAST_WAVE_FMT_HEADER fmt;                      /*      fmt Header      */
+       
+       ROAST_WAVE_DATA_HEADER data;            /*      data Heaer      */
+       
+       void* p_data;
+       
+} ROAST_PCM_WAVEFILE;
+
+
+#endif/*__SFJP_OPENMGL_roast_wave_file_format_H__*/