static int writeData(void* _call) { WriterAVCallData_t* call = (WriterAVCallData_t*) _call; unsigned char PesHeader[PES_MAX_HEADER_SIZE]; flac_printf(10, "\n"); if (call == NULL) { flac_err("call data is NULL...\n"); return 0; } flac_printf(10, "AudioPts %lld\n", call->Pts); if ((call->data == NULL) || (call->len <= 0)) { flac_err("parsing NULL Data. ignoring...\n"); return 0; } if (call->fd < 0) { flac_err("file pointer < 0. ignoring ...\n"); return 0; } int HeaderLength = InsertPesHeader (PesHeader, call->len , MPEG_AUDIO_PES_START_CODE, call->Pts, 0); unsigned char* PacketStart = malloc(call->len + HeaderLength); memcpy (PacketStart, PesHeader, HeaderLength); memcpy (PacketStart + HeaderLength, call->data, call->len); int len = write(call->fd, PacketStart, call->len + HeaderLength); free(PacketStart); flac_printf(10, "flac_Write-< len=%d\n", len); return len; }
static int writeData(void *_call) { WriterAVCallData_t *call = (WriterAVCallData_t *) _call; unsigned char PesHeader[PES_MAX_HEADER_SIZE]; flac_printf(10, "\n"); if (call == NULL) { flac_err("call data is NULL...\n"); return 0; } flac_printf(10, "AudioPts %lld\n", call->Pts); if ((call->data == NULL) || (call->len <= 0)) { flac_err("parsing NULL Data. ignoring...\n"); return 0; } if (call->fd < 0) { flac_err("file pointer < 0. ignoring ...\n"); return 0; } struct iovec iov[2]; iov[0].iov_base = PesHeader; iov[0].iov_len = InsertPesHeader(PesHeader, call->len , MPEG_AUDIO_PES_START_CODE, call->Pts, 0); iov[1].iov_base = call->data; iov[1].iov_len = call->len; int len = writev(call->fd, iov, 2); flac_printf(10, "flac_Write-< len=%d\n", len); return len; }