<div dir="ltr"><div>hi,</div><div> </div><div>I am setting the thread_count as below:</div><div> </div><div>code snippet: In example file - <a href="https://www.ffmpeg.org/doxygen/trunk/demuxing_decoding_8c-example.html">https://www.ffmpeg.org/doxygen/trunk/demuxing_decoding_8c-example.html</a></div><div>--------------------------------------------------------</div><div><p><font color="#0000ff" face="Consolas"><font color="#0000ff" face="Consolas"><font color="#0000ff" face="Consolas">int</font></font></font><font face="Consolas"><font face="Consolas"> main (</font></font><font color="#0000ff" face="Consolas"><font color="#0000ff" face="Consolas"><font color="#0000ff" face="Consolas">int</font></font></font><font face="Consolas"><font face="Consolas"> argc, </font></font><font color="#0000ff" face="Consolas"><font color="#0000ff" face="Consolas"><font color="#0000ff" face="Consolas">char</font></font></font><font face="Consolas"><font face="Consolas"> **argv)</font></font></p><font face="Consolas"><font face="Consolas">
<p>{</p>
</font></font><p><font face="Consolas"><font face="Consolas"> </font></font><font color="#0000ff" face="Consolas"><font color="#0000ff" face="Consolas"><font color="#0000ff" face="Consolas">int</font></font></font><font face="Consolas"><font face="Consolas"> ret = 0, got_frame;</font></font></p><font face="Consolas"><font face="Consolas">
</font></font><p><font face="Consolas"><font face="Consolas"> </font></font><font color="#008000" face="Consolas"><font color="#008000" face="Consolas"><font color="#008000" face="Consolas">//unsigned long start, end;</font></font></font></p><font color="#008000" face="Consolas"><font color="#008000" face="Consolas"><font color="#008000" face="Consolas">
</font></font></font><font face="Consolas"><font face="Consolas"></font></font><p><font face="Consolas"><font face="Consolas">      </font></font><font color="#0000ff" face="Consolas"><font color="#0000ff" face="Consolas"><font color="#0000ff" face="Consolas">int</font></font></font><font face="Consolas"><font face="Consolas"> frame_count=0;</font></font></p><font face="Consolas"><font face="Consolas">
</font></font><p><font face="Consolas"><font face="Consolas"> </font></font><font color="#0000ff" face="Consolas"><font color="#0000ff" face="Consolas"><font color="#0000ff" face="Consolas">char</font></font></font><font face="Consolas"><font face="Consolas"> frameStart[50], frameEnd[50];</font></font></p><font face="Consolas"><font face="Consolas">
</font></font><p><font face="Consolas"><font face="Consolas"> </font></font><font color="#008000" face="Consolas"><font color="#008000" face="Consolas"><font color="#008000" face="Consolas">//FILE *fp;</font></font></font></p><font color="#008000" face="Consolas"><font color="#008000" face="Consolas"><font color="#008000" face="Consolas">
</font></font></font><font face="Consolas"><font face="Consolas"><p>    </p>
<p>       SimRoiStart();</p>
</font></font><p><font face="Consolas"><font face="Consolas"> </font></font><font color="#008000" face="Consolas"><font color="#008000" face="Consolas"><font color="#008000" face="Consolas">//srand((unsigned int)time(NULL));</font></font></font></p><font color="#008000" face="Consolas"><font color="#008000" face="Consolas"><font color="#008000" face="Consolas">
</font></font></font><font face="Consolas"><font face="Consolas">
</font></font><p><font face="Consolas"><font face="Consolas"> </font></font><font color="#0000ff" face="Consolas"><font color="#0000ff" face="Consolas"><font color="#0000ff" face="Consolas">if</font></font></font><font face="Consolas"><font face="Consolas"> (argc != 4 && argc != 5) {</font></font></p><font face="Consolas"><font face="Consolas">
</font></font><p><font face="Consolas"><font face="Consolas">         fprintf(stderr, </font></font><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas">"usage: %s [-refcount=<old|new_norefcount|new_refcount>] "</font></font></font></p><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas">
</font></font></font><font face="Consolas"><font face="Consolas"></font></font><p><font face="Consolas"><font face="Consolas">              </font></font><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas">"input_file video_output_file audio_output_file\n"</font></font></font></p><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas">
</font></font></font><font face="Consolas"><font face="Consolas"></font></font><p><font face="Consolas"><font face="Consolas">              </font></font><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas">"API example program to show how to read frames from an input file.\n"</font></font></font></p><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas">
</font></font></font><font face="Consolas"><font face="Consolas"></font></font><p><font face="Consolas"><font face="Consolas">              </font></font><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas">"This program reads frames from a file, decodes them, and writes decoded\n"</font></font></font></p><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas">
</font></font></font><font face="Consolas"><font face="Consolas"></font></font><p><font face="Consolas"><font face="Consolas">              </font></font><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas">"video frames to a rawvideo file named video_output_file, and decoded\n"</font></font></font></p><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas">
</font></font></font><font face="Consolas"><font face="Consolas"></font></font><p><font face="Consolas"><font face="Consolas">              </font></font><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas">"audio frames to a rawaudio file named audio_output_file.\n\n"</font></font></font></p><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas">
</font></font></font><font face="Consolas"><font face="Consolas"></font></font><p><font face="Consolas"><font face="Consolas">              </font></font><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas">"If the -refcount option is specified, the program use the\n"</font></font></font></p><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas">
</font></font></font><font face="Consolas"><font face="Consolas"></font></font><p><font face="Consolas"><font face="Consolas">              </font></font><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas">"reference counting frame system which allows keeping a copy of\n"</font></font></font></p><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas">
</font></font></font><font face="Consolas"><font face="Consolas"></font></font><p><font face="Consolas"><font face="Consolas">              </font></font><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas">"the data for longer than one decode call. If unset, it's using\n"</font></font></font></p><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas">
</font></font></font><font face="Consolas"><font face="Consolas"></font></font><p><font face="Consolas"><font face="Consolas">              </font></font><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas">"the classic old method.\n"</font></font></font></p><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas">
</font></font></font><font face="Consolas"><font face="Consolas"></font></font><p><font face="Consolas"><font face="Consolas">              </font></font><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas">"\n"</font></font></font><font face="Consolas"><font face="Consolas">, argv[0]);</font></font></p><font face="Consolas"><font face="Consolas">
<p>               exit(1);</p>
<p>       }</p>
<p>       </p>
</font></font><p><font face="Consolas"><font face="Consolas"> </font></font><font color="#0000ff" face="Consolas"><font color="#0000ff" face="Consolas"><font color="#0000ff" face="Consolas">if</font></font></font><font face="Consolas"><font face="Consolas"> (argc == 5) {</font></font></p><font face="Consolas"><font face="Consolas">
</font></font><p><font face="Consolas"><font face="Consolas">         </font></font><font color="#0000ff" face="Consolas"><font color="#0000ff" face="Consolas"><font color="#0000ff" face="Consolas">const</font></font></font><font face="Consolas"><font face="Consolas"> </font></font><font color="#0000ff" face="Consolas"><font color="#0000ff" face="Consolas"><font color="#0000ff" face="Consolas">char</font></font></font><font face="Consolas"><font face="Consolas"> *mode = argv[1] + strlen(</font></font><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas">"-refcount="</font></font></font><font face="Consolas"><font face="Consolas">);</font></font></p><font face="Consolas"><font face="Consolas">
</font></font><p><font face="Consolas"><font face="Consolas">         </font></font><font color="#0000ff" face="Consolas"><font color="#0000ff" face="Consolas"><font color="#0000ff" face="Consolas">if</font></font></font><font face="Consolas"><font face="Consolas"> (!strcmp(mode, </font></font><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas">"old"</font></font></font><font face="Consolas"><font face="Consolas">)) api_mode = API_MODE_OLD;</font></font></p><font face="Consolas"><font face="Consolas">
</font></font><p><font face="Consolas"><font face="Consolas">         </font></font><font color="#0000ff" face="Consolas"><font color="#0000ff" face="Consolas"><font color="#0000ff" face="Consolas">else</font></font></font><font face="Consolas"><font face="Consolas"> </font></font><font color="#0000ff" face="Consolas"><font color="#0000ff" face="Consolas"><font color="#0000ff" face="Consolas">if</font></font></font><font face="Consolas"><font face="Consolas"> (!strcmp(mode, </font></font><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas">"new_norefcount"</font></font></font><font face="Consolas"><font face="Consolas">)) api_mode = API_MODE_NEW_API_NO_REF_COUNT;</font></font></p><font face="Consolas"><font face="Consolas">
</font></font><p><font face="Consolas"><font face="Consolas">         </font></font><font color="#0000ff" face="Consolas"><font color="#0000ff" face="Consolas"><font color="#0000ff" face="Consolas">else</font></font></font><font face="Consolas"><font face="Consolas"> </font></font><font color="#0000ff" face="Consolas"><font color="#0000ff" face="Consolas"><font color="#0000ff" face="Consolas">if</font></font></font><font face="Consolas"><font face="Consolas"> (!strcmp(mode, </font></font><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas">"new_refcount"</font></font></font><font face="Consolas"><font face="Consolas">)) api_mode = API_MODE_NEW_API_REF_COUNT;</font></font></p><font face="Consolas"><font face="Consolas">
</font></font><p><font face="Consolas"><font face="Consolas">         </font></font><font color="#0000ff" face="Consolas"><font color="#0000ff" face="Consolas"><font color="#0000ff" face="Consolas">else</font></font></font><font face="Consolas"><font face="Consolas"> {</font></font></p><font face="Consolas"><font face="Consolas">
</font></font><p><font face="Consolas"><font face="Consolas">                 fprintf(stderr, </font></font><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas">"unknow mode '%s'\n"</font></font></font><font face="Consolas"><font face="Consolas">, mode);</font></font></p><font face="Consolas"><font face="Consolas">
<p>                       exit(1);</p>
<p>               }</p>
<p>               argv++;</p>
<p>       }</p>

<p>       src_filename = argv[1];</p>
<p>       video_dst_filename = argv[2];</p>
<p>       audio_dst_filename = argv[3];</p>
<p>       </p></font></font></div><div><font color="#008000" face="Consolas"><font color="#008000" face="Consolas"><font color="#008000" face="Consolas"><p>/* register all formats and codecs */</p>
</font></font></font><font face="Consolas"><font face="Consolas"><p>    av_register_all();</p>
<p>       </p>
</font></font><p><font face="Consolas"><font face="Consolas"> </font></font><font color="#008000" face="Consolas"><font color="#008000" face="Consolas"><font color="#008000" face="Consolas">/* open input file, and allocate format context */</font></font></font></p><font color="#008000" face="Consolas"><font color="#008000" face="Consolas"><font color="#008000" face="Consolas">
</font></font></font><font face="Consolas"><font face="Consolas"></font></font><p><font face="Consolas"><font face="Consolas">      </font></font><font color="#0000ff" face="Consolas"><font color="#0000ff" face="Consolas"><font color="#0000ff" face="Consolas">if</font></font></font><font face="Consolas"><font face="Consolas"> (avformat_open_input(&fmt_ctx, src_filename, NULL, NULL) < 0) {</font></font></p><font face="Consolas"><font face="Consolas">
</font></font><p><font face="Consolas"><font face="Consolas">         fprintf(stderr, </font></font><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas">"Could not open source file %s\n"</font></font></font><font face="Consolas"><font face="Consolas">, src_filename);</font></font></p><font face="Consolas"><font face="Consolas">
<p>               exit(1);</p>
<p>       }</p>
<p>       </p>
</font></font><p><font face="Consolas"><font face="Consolas"> </font></font><font color="#008000" face="Consolas"><font color="#008000" face="Consolas"><font color="#008000" face="Consolas">/* retrieve stream information */</font></font></font></p><font color="#008000" face="Consolas"><font color="#008000" face="Consolas"><font color="#008000" face="Consolas">
</font></font></font><font face="Consolas"><font face="Consolas"></font></font><p><font face="Consolas"><font face="Consolas">      </font></font><font color="#0000ff" face="Consolas"><font color="#0000ff" face="Consolas"><font color="#0000ff" face="Consolas">if</font></font></font><font face="Consolas"><font face="Consolas"> (avformat_find_stream_info(fmt_ctx, NULL) < 0) {</font></font></p><font face="Consolas"><font face="Consolas">
</font></font><p><font face="Consolas"><font face="Consolas">         fprintf(stderr, </font></font><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas">"Could not find stream information\n"</font></font></font><font face="Consolas"><font face="Consolas">);</font></font></p><font face="Consolas"><font face="Consolas">
<p>               exit(1);</p>
<p>       }</p>
<p>       </p>
</font></font><p><font face="Consolas"><font face="Consolas"> </font></font><font color="#0000ff" face="Consolas"><font color="#0000ff" face="Consolas"><font color="#0000ff" face="Consolas">if</font></font></font><font face="Consolas"><font face="Consolas"> (open_codec_context(&video_stream_idx, fmt_ctx, AVMEDIA_TYPE_VIDEO) >= 0) {</font></font></p><font face="Consolas"><font face="Consolas">
<p>               video_stream = fmt_ctx->streams[video_stream_idx];</p>
<p>               video_dec_ctx = video_stream->codec;</p>
</font></font><p><font face="Consolas"><font face="Consolas">         </font></font><font face="Consolas"><font face="Consolas"><font color="#ff0000" face="Consolas" style="background-color:rgb(255,255,0)"><strong>//set number of threads to be utilized for video decoding</strong></font></font></font></p><font face="Consolas"><font face="Consolas"><font color="#ff0000" face="Consolas" style="background-color:rgb(255,255,0)"><strong>
</strong></font></font></font><font face="Consolas"><font face="Consolas"><p><strong><font color="#ff0000" style="background-color:rgb(255,255,0)">               video_dec_ctx->thread_count = 7;</font></strong></p><strong><font color="#ff0000" style="background-color:rgb(255,255,0)">
</font></strong></font></font><p><strong><font color="#ff0000"><font style="background-color:rgb(255,255,0)"><font face="Consolas"><font face="Consolas">           video_dec_ctx->thread_type = FF_THREAD_SLICE;    </font></font><font face="Consolas"><font face="Consolas"><font face="Consolas">//multithreading method set to slice-based</font></font></font></font></font></strong></p><strong><font face="Consolas"><font face="Consolas"><font color="#ff0000" face="Consolas" style="background-color:rgb(255,255,0)">
</font></font></font><font face="Consolas"><font face="Consolas"></font></font></strong><p><font face="Consolas"><font face="Consolas"><strong><font color="#ff0000" style="background-color:rgb(255,255,0)">         </font></strong>video_dst_file = fopen(video_dst_filename, </font></font><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas">"wb"</font></font></font><font face="Consolas"><font face="Consolas">);</font></font></p><font face="Consolas"><font face="Consolas">
</font></font><p><font face="Consolas"><font face="Consolas">         </font></font><font color="#0000ff" face="Consolas"><font color="#0000ff" face="Consolas"><font color="#0000ff" face="Consolas">if</font></font></font><font face="Consolas"><font face="Consolas"> (!video_dst_file) {</font></font></p><font face="Consolas"><font face="Consolas">
</font></font><p><font face="Consolas"><font face="Consolas">                 fprintf(stderr, </font></font><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas"><font color="#a31515" face="Consolas">"Could not open destination file %s\n"</font></font></font><font face="Consolas"><font face="Consolas">, video_dst_filename);</font></font></p><font face="Consolas"><font face="Consolas">
<p>                       ret = 1;</p>
</font></font><p><font face="Consolas"><font face="Consolas">                 </font></font><font color="#0000ff" face="Consolas"><font color="#0000ff" face="Consolas"><font color="#0000ff" face="Consolas">goto</font></font></font><font face="Consolas"><font face="Consolas"> end;</font></font></p><font face="Consolas"><font face="Consolas">
<p>               }</p>
<p>       .....................</p></font></font></div><div>---------------------------------------------------------------</div><div> </div><div>and for compilation the command used is - </div><div> </div><div>gcc <span lang="EN">-o demuxing_decoding demuxing_decoding.c <span lang="EN">-lavutil -lavformat -lavcodec -lz -lavutil -lm -lpthread -lbz2</span></span><p>The threads are not getting created, I have set the thread_count to 7 to create 8 threads.</p><p>I have also tried by setting the thread_count to 0 for automatic thread creation based on the no of cores.</p><p>Any pointers will be helpful.</p><p> </p><p>Thanks,</p><p>Ierum</p></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Oct 27, 2014 at 9:48 PM, wm4 <span dir="ltr"><<a href="mailto:nfxjfg@googlemail.com" target="_blank">nfxjfg@googlemail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span>On Mon, 27 Oct 2014 16:08:33 +0530<br>
Ierum Shanaya <<a href="mailto:ierumshanaya85@gmail.com">ierumshanaya85@gmail.com</a>> wrote:<br>
<br>
> Hi,<br>
><br>
> I am trying to run ffmpeg video decoding by creating multiple threads. The<br>
> problem i am facing is that only one thread is created, irrespective of<br>
> setting the thread_count to 0 or any no like say 2 , 4 etc.<br>
><br>
> I did check the config as below:<br>
><br>
</span>> *it doesnt have --enable pthreads things.. Is this the issue??. *<br>
<span>> If so, how to set the --enable pthread again in ffmpeg?? Can someone please<br>
> help me understand.<br>
><br>
> I have Ubuntu 12.4 on my system(64 bit)<br>
><br>
</span>> *Output:*<br>
<span>> -----------------------------------------------------------------<br>
><br>
> ierumshanaya@ubuntu:~/ffmpeg_sources/ffmpeg$ ffmpeg<br>
> ffmpeg version git-2014-01-05-f5f6e59 Copyright (c) 2000-2014 the FFmpeg<br>
> developers<br>
>   built on Jan 22 2014 19:00:25 with gcc 4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5)<br>
</span>>   *configuration*: --prefix=/home/ierumshanaya/ffmpeg_build/lib/pkgconfig<br>
<span>> --extra-cflags=-I/home/ierumshanaya/ffmpeg_build/include<br>
> --extra-ldflags=-L/home/ierumshanaya/ffmpeg_build/lib<br>
> --bindir=/home/ierumshanaya/bin --extra-libs=-ldl --enable-gpl<br>
> --enable-libass --enable-libfdk-aac --enable-libmp3lame --enable-libtheora<br>
> --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree<br>
> --enable-x11grab<br>
>   libavutil      52. 60.100 / 52. 60.100<br>
>   libavcodec     55. 47.100 / 55. 47.100<br>
>   libavformat    55. 22.102 / 55. 22.102<br>
>   libavdevice    55.  5.102 / 55.  5.102<br>
>   libavfilter     4.  0.103 /  4.  0.103<br>
>   libswscale      2.  5.101 /  2.  5.101<br>
>   libswresample   0. 17.104 /  0. 17.104<br>
>   libpostproc    52.  3.100 / 52.  3.100<br>
> Hyper fast Audio and Video encoder<br>
> usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options]<br>
> outfile}...<br>
> Thanks,<br>
> Ierum<br>
<br>
</span>Are you setting the thread_count before "opening" the decoder?<br>
<div class="HOEnZb"><div class="h5">_______________________________________________<br>
Libav-user mailing list<br>
<a href="mailto:Libav-user@ffmpeg.org">Libav-user@ffmpeg.org</a><br>
<a href="http://ffmpeg.org/mailman/listinfo/libav-user" target="_blank">http://ffmpeg.org/mailman/listinfo/libav-user</a><br>
</div></div></blockquote></div><br></div>