m_formatCtx = avformat_alloc_context ();
uint8_t * buffer = NULL, * avio_ctx_buffer = NULL;
size_t buffer_size, avio_ctx_buffer_size = 200;
avio_ctx_buffer = (uint8_t *) av_malloc (avio_ctx_buffer_size * 10);
AVIOContext * avio_ctx = avio_alloc_context (avio_ctx_buffer, avio_ctx_buffer_size, 0,
tcp, &socketRead, NULL, NULL);
Считайте видео / аудио информацию через socketRead, как указано выше.
int socketRead (void * ptr, uint8_t * buf, int buf_size)
{
printf ("socketRead bufsize =% d \ n", buf_size);
ssize_t readSize = 0;
TCPClient * tcp = (TCPClient *) ptr;
readSize = tcp-> read (buf, buf_size);
return readSize;
}
Однако, если посередине неправильно получен видео пакет,
D / libnav: socketRead bufsize = 2048
D / libnav: socketRead bufsize = 2048
D / libnav: socketRead bufsize = 4096
D / libnav: socketRead bufsize = 8192
D / libnav: socketRead bufsize = 16384
D / libnav: socketRead bufsize = 32768
D / libnav: socketRead bufsize = 65536
D / libnav: socketRead bufsize = 131072
D / libnav: socketRead bufsize = 262144
D / libnav: socketRead bufsize = 524288
Наконец, buf_size для socketRead увеличивается и в конечном итоге
A / libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x440 in tid 19369 (Thread-21565)
Я получаю эту ошибку.
Я хочу сделать другую гибкую обработку вместо сбоя. Мне нужна помощь.