[Libav-user] custom write_packet callback not being invoked
manoj s k
manoj563125 at gmail.com
Mon Jun 3 13:34:50 EEST 2019
i have been trying to have a custom avio for write operations using
ffmpeg/libav to write remuxed packets to a cache instead of a file or
socket. read callbacks are working fine but write callback is never
invoked. I followed example of
https://gist.github.com/AlexVestin/15b90d72f51ff7521cd7ce4b70056dff
but to no avail. My code is as shown below for write callback function:
*int write_packet(void *opaque, uint8_t *buf, int buf_size) {*
* cout << "in write_packet";*
* outfile.open("segmentfile.ts", std::ios_base::app);*
* if( !outfile ){*
*cout** << "Opening file failed" ;*
* return 0;*
* }*
* outfile << (uint8_t *)bd->buf;*
* return buf_size;*
*}*
and registration is via :
* avio_ctx_buffer = (uint8_t *)av_malloc(avio_ctx_buffer_size);*
* if (!avio_ctx_buffer) {*
* ret = AVERROR(ENOMEM);*
* exit(1);*
* }*
* avio_ctx = avio_alloc_context(avio_ctx_buffer, avio_ctx_buffer_size,
1, &gbd, NULL, write_packet,NULL);*
* if (!avio_ctx) {*
* ret = AVERROR(ENOMEM);*
* exit(1);*
* }*
* m_ofmt_ctx = avformat_alloc_context();*
* AVOutputFormat* ofmt = av_guess_format(output_format_name.c_str(),
nullptr, nullptr);*
* if(!ofmt) {*
*cout** << "Output format not found " << output_format_name;*
* return false;*
* }*
*cout** << "Creating all output contexts successful";*
* m_ofmt_ctx->pb = avio_ctx;*
* //m_ofmt_ctx->flags |= AVFMT_FLAG_CUSTOM_IO;*
* m_ofmt_ctx->oformat = ofmt;*
I am thinking after this registration, any time there is a write function,
like av_interleaved_write_frame()* , *the callback must be called.But the
call invocation is not happening. Is there something i need to do other
than above registration to make write callback work?
I tried both having and removing "*m_ofmt_ctx->flags |=
AVFMT_FLAG_CUSTOM_IO;*"
but neither works.
--
Regards
Manoj
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://ffmpeg.org/pipermail/libav-user/attachments/20190603/9dc50c24/attachment.html>
More information about the Libav-user
mailing list