搜索

[DSP] eZdsp5535

[复制链接]
278|2
 楼主 | 2020-6-18 22:08 | 显示全部楼层 ||阅读模式


  1. /**
  2. * main.c
  3. */
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include "tistdtypes.h"

  7. Uint8 waveHeader[44] = {
  8.     0x52, 0x49, 0x46, 0x46, 0x00, 0x00, 0x00, 0x00,
  9.     0x57, 0x41, 0x56, 0x45, 0x66, 0x6D, 0x74, 0x20,
  10.     0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00,
  11.     0x40, 0x1F, 0x00, 0x00, 0x80, 0x3E, 0x00, 0x00,
  12.     0x02, 0x00, 0x10, 0x00, 0x64, 0x61, 0x74, 0x61,
  13.     0x00, 0x00, 0x00, 0x00
  14. };

  15. #define SIZE 1024
  16. Uint8 ch[SIZE];

  17. int main(void)
  18. {
  19.     FILE *fp1, *fp2;
  20.     Uint32 i;
  21.     printf("Exp. 1.2 --- file IO\n");
  22.     fp1 = fopen("..\\data\\C55DSPUSBStickAudioTest.pcm", "rb");   
  23.         if (fp1 == NULL) {
  24.         printf("Failed to open output file 'C55DSPUSBStickAudioTest.pcm'\n");
  25.         exit(0);
  26.     }

  27.     fp2 = fopen("..\\data\\C55DSPUSBStickAudioTest.wav", "wb");


  28.     fseek(fp2, 44, 0);
  29.     i = 0;
  30.     size_t a = fread(ch, sizeof(Uint8), SIZE, fp1);
  31.     Uint8 b = sizeof(Uint8);
  32. //    while(fread(ch, sizeof(Uint8), SIZE, fp1) == SIZE)
  33.     while(a == SIZE)
  34.     {
  35.         fwrite(ch, sizeof(Uint8), SIZE, fp2);
  36.         i += SIZE;
  37.         printf("%ld bytes processed\n", i);
  38.     }

  39.     waveHeader[40] = (Uint8)(i&0xff);
  40.     waveHeader[41] = (Uint8)(i >> 8) & 0xff;
  41.     waveHeader[42] = (Uint8)(i >> 16) & 0xff;
  42.     waveHeader[43] = (Uint8)(i >> 24) & 0xff;
  43.     waveHeader[4] = waveHeader[40];
  44.     waveHeader[5] = waveHeader[41];
  45.     waveHeader[6] = waveHeader[42];
  46.     waveHeader[7] = waveHeader[43];

  47.     rewind(fp2);
  48.     fwrite(waveHeader, sizeof(Uint8), 44, fp2);
  49.     fclose(fp1);
  50.     fclose(fp2);

  51.     printf("\nExp. completed\n");
  52.         return 0;
  53. }
复制代码


使用仿真器调试,fread总是返回0。文件路径没有问题。实在是不解,请大神指教。

使用特权

评论回复
 楼主 | 2020-6-18 22:09 | 显示全部楼层
自己顶

使用特权

评论回复
| 2020-6-30 22:29 | 显示全部楼层
都改成char型读取,取其低8位做拼接。例如:
#define FRAME_SZ 256
typedef short Word16;
typedef char Word8;
Word16 signal[FRAME_SZ];
原始代码是fread(signal, sizeof(Word16), FRAME_SZ, fp); // 不能工作修改后代码Word8 tmp[2*FRAME_SZ];
// 缓存区fread(tmp, sizeof(Word8), 2*FRAME_SZ, fp);// 字节拼接
for (i=0; i<FRAME_SZ;i++) signal[i] = (tmp[2*i+1]<<8) | tmp[2*i];希望有所帮助。

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

在线客服 快速回复 返回顶部 返回列表