Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <sys/types.h>
- #include <unistd.h>
- #include <sys/wait.h>
- typedef struct { char filename[12] ; int address;} test;
- int main(void){
- pid_t childPID;
- FILE * fi;
- FILE * fo;
- FILE * ft;
- test casa[4000];
- int dboffset[4000];
- int i,j;
- int offset;
- int status;
- fi=fopen("VOICE","r");
- fo=fopen("VOICE.out","w");
- /*primero 2 bytes*/
- putc(getc(fi),fo);
- putc(getc(fi),fo);
- fread(&casa,sizeof(test),4000,fi);
- i=0;
- do{
- fwrite(&casa[i],sizeof(test),1,fo);
- } while (casa[i++].filename[0] != '\0');
- fflush(fo);
- i=-1;
- while (casa[++i].filename[0] != '\0'){
- //printf("break");
- //getchar();
- lseek(fileno(fi), casa[i].address , SEEK_SET);
- dboffset[i]=(int) ftell(fo);
- if ( fork() == 0){
- // dup2( fileno(fo), STDOUT_FILENO);
- dup2( fileno(fi), STDIN_FILENO);
- execl( "/usr/bin/ffmpeg","/usr/bin/ffmpeg","-i", "-", "-y","/dev/shm/tmp.wav");
- }
- wait(&status);
- ft=fopen("/dev/shm/tmp.wav","r");
- while( EOF != (j=fgetc(ft)))
- fputc(j,fo);
- fclose(ft);
- }
- //offset de la linea en blanco
- dboffset[i]=(int) ftell(fo);
- i=0;
- do{
- printf("dboffset %x\n", dboffset[i]);
- offset=(size_t) &casa[i].address - (size_t) &casa + 2;
- fflush(fo);
- fseek(fo, offset, SEEK_SET);
- fwrite(&(dboffset[i]),sizeof(int),1,fo);
- } while (casa[i++].filename[0] != '\0');
- fclose(fi);
- fclose(fo);
- rename("VOICE","VOICE.bk");
- rename("VOICE.out","VOICE");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement