示例#1
0
文件: mp3.c 项目: Audioniek/apps
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;
}
示例#2
0
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;
}