static int writeData(void* _call) { WriterAVCallData_t* call = (WriterAVCallData_t*) _call; unsigned char PesHeader[PES_MAX_HEADER_SIZE + 22]; mp3_printf(10, "\n"); if (call == NULL) { mp3_err("call data is NULL...\n"); return 0; } mp3_printf(10, "AudioPts %lld\n", call->Pts); if ((call->data == NULL) || (call->len <= 0)) { mp3_err("parsing NULL Data. ignoring...\n"); return 0; } if (call->fd < 0) { mp3_err("file pointer < 0. ignoring ...\n"); return 0; } call->private_size = 0; uint32_t headerSize = InsertPesHeader (PesHeader, call->len + call->private_size, MPEG_AUDIO_PES_START_CODE, call->Pts, 0); if(call->private_size > 0) { memcpy(&PesHeader[headerSize], call->private_data, call->private_size); headerSize += call->private_size; } struct iovec iov[2]; iov[0].iov_base = PesHeader; iov[0].iov_len = headerSize; iov[1].iov_base = call->data; iov[1].iov_len = call->len; int len = call->WriteV(call->fd, iov, 2); mp3_printf(10, "mp3_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]; mp3_printf(10, "\n"); if (call == NULL) { mp3_err("call data is NULL...\n"); return 0; } mp3_printf(10, "AudioPts %lld\n", call->Pts); if ((call->data == NULL) || (call->len <= 0)) { mp3_err("parsing NULL Data. ignoring...\n"); return 0; } if (call->fd < 0) { mp3_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); mp3_printf(10, "mp3_Write-< len=%d\n", len); return len; }