Re: [FFmpeg-devel] questions about multi-thread issues for ffmpeg

2016-09-12 Thread Ronald S. Bultje
Hi,

On Mon, Sep 12, 2016 at 4:30 AM, qw  wrote:

> hi Ronald,
>
>
> >does ffmpeg support multi-thread in this case? If not, which ffmpeg
> >> functions should be synchronized by application developer?
> >
> >
> >Yes, ffmpeg supports multi-threading (internally), it is tested
> >continuously and is considered very safe.
> >
> >Can you show some code? I'm wondering if your use is unusual.
>
>
>
> In my side, ffmpeg 2.8.6 is used to make the simple transcoding program,
> while x264 as video encoder with 2 pass rate control algorithm.
>
>
> Because of using 2-pass rate control, AVFormatContext is created with
> setting AVFMT_NOFILE for 1st pass, which just encodes video stream. After
> encoding the total video stream, video and audio streams are encoded for
> 2nd pass. If two transocding tasks are started simultaneously, and each
> corresponds to one thread, AVFormatContext::oformat->flags is changed to
> unset AVFMT_NOFILE at the end of 1st pass encoding, i.e. flushing bufferred
> video from x264 encoder.
>
>
> If AVFMT_NOFILE is unset in AVFormatContext::oformat->flags for 1st pass,
> there is no crash issue any more.


Are these two transcoding tasks (re)using the same AVFormatContext?

Ronald
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] questions about multi-thread issues for ffmpeg

2016-09-12 Thread qw
hi Ronald,


>does ffmpeg support multi-thread in this case? If not, which ffmpeg
>> functions should be synchronized by application developer?
>
>
>Yes, ffmpeg supports multi-threading (internally), it is tested
>continuously and is considered very safe.
>
>Can you show some code? I'm wondering if your use is unusual.



In my side, ffmpeg 2.8.6 is used to make the simple transcoding program, while 
x264 as video encoder with 2 pass rate control algorithm.


Because of using 2-pass rate control, AVFormatContext is created with setting 
AVFMT_NOFILE for 1st pass, which just encodes video stream. After encoding the 
total video stream, video and audio streams are encoded for 2nd pass. If two 
transocding tasks are started simultaneously, and each corresponds to one 
thread, AVFormatContext::oformat->flags is changed to unset AVFMT_NOFILE at the 
end of 1st pass encoding, i.e. flushing bufferred video from x264 encoder.


If AVFMT_NOFILE is unset in AVFormatContext::oformat->flags for 1st pass, there 
is no crash issue any more.


Thanks!


Regards


Andrew



At 2016-09-08 17:56:07, "Ronald S. Bultje"  wrote:
>Hi Andrew,
>
>On Thu, Sep 8, 2016 at 3:59 AM, qw  wrote:
>
>> I have made one simple transcoding program by using ffmpeg lib, where
>> several av transcoding tasks are done in one process and each task
>> corresponds to one thread.
>>
>> But some ffmpeg function will report error, and sometimes the multi-thread
>> version of transcoding program will crash abnormally.
>>
>> For example, av_guess_format("mp4", NULL, NULL) returns error accidentally
>> with several concurrent tasks. And transcoding program will crash, when
>> calling av_interleaved_write_frame ().
>>
>
>Have you tried running this under valgrind? It is typically very helpful to
>see what causes the crash.
>
>does ffmpeg support multi-thread in this case? If not, which ffmpeg
>> functions should be synchronized by application developer?
>
>
>Yes, ffmpeg supports multi-threading (internally), it is tested
>continuously and is considered very safe.
>
>Can you show some code? I'm wondering if your use is unusual.
>
>Ronald
>___
>ffmpeg-devel mailing list
>ffmpeg-devel@ffmpeg.org
>http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] questions about multi-thread issues for ffmpeg

2016-09-08 Thread Ronald S. Bultje
Hi Andrew,

On Thu, Sep 8, 2016 at 3:59 AM, qw  wrote:

> I have made one simple transcoding program by using ffmpeg lib, where
> several av transcoding tasks are done in one process and each task
> corresponds to one thread.
>
> But some ffmpeg function will report error, and sometimes the multi-thread
> version of transcoding program will crash abnormally.
>
> For example, av_guess_format("mp4", NULL, NULL) returns error accidentally
> with several concurrent tasks. And transcoding program will crash, when
> calling av_interleaved_write_frame ().
>

Have you tried running this under valgrind? It is typically very helpful to
see what causes the crash.

does ffmpeg support multi-thread in this case? If not, which ffmpeg
> functions should be synchronized by application developer?


Yes, ffmpeg supports multi-threading (internally), it is tested
continuously and is considered very safe.

Can you show some code? I'm wondering if your use is unusual.

Ronald
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel