thanks <span class="EP8xU" style="color: rgb(121, 6, 25);">Leonardo<br><br><br><font color="#000000">In my application there are two threads. One is the theora encoder the other is a bandwidth measuring program.<br><br>Both of them are working properly when they are separated. (theora is obviously working properly, bandwidth measuring component also working properly)<br>
<br>So this problem is occurred when both these are joined (encoder is the main thread, bandwidth measurer is the child thread)<br><br>So i think that the problem is with my makefile. Please can anyone help me to find the problem<br>
<br>If you want more information I can give it<br><br><br>thanks in advance<br><br><br><br></font></span><br><div class="gmail_quote">On Wed, Apr 23, 2008 at 5:08 PM, Leonardo de Paula Rosa Piga &lt;<a href="mailto:lpiga@terra.com.br">lpiga@terra.com.br</a>&gt; wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Janaka,<br>
<br>
The -O2 gcc optmizations are conservative. They don&#39;t change the<br>
behavior of &nbsp;your programs, hence, there are good chances that you<br>
have bugs in your implementation.<br>
<div><div></div><div class="Wj3C7c"><br>
On Wed, Apr 23, 2008 at 7:17 AM, R. P. Janaka &lt;<a href="mailto:rpjanaka@gmail.com">rpjanaka@gmail.com</a>&gt; wrote:<br>
&gt; I have tried to add a plunging to the &quot;libtheora-1.0beta2&quot; (network<br>
&gt; bandwidth measuring component was added) and Got it success for some far<br>
&gt;<br>
&gt; now the problem is when it is added the encoding process get extremely slow<br>
&gt; (around 20 seconds delay).<br>
&gt;<br>
&gt; I think that the problem is with my modified Makefile (some flag may have<br>
&gt; missed).<br>
&gt;<br>
&gt; the following is my modified Makefile.am which is in the<br>
&gt; &quot;libtheora-1.0beta2/lib&quot; directory.<br>
&gt;<br>
&gt; ******************************<br>
&gt; &nbsp;*********************************************************<br>
&gt;<br>
&gt; DEFS &nbsp; &nbsp; = -DLINUX -DRETSIGTYPE=void -DHAVE_SIGACTION=1<br>
&gt; LIBS &nbsp; &nbsp; = -lpthread<br>
&gt; &nbsp;INCS &nbsp; &nbsp; = -I.<br>
&gt;<br>
&gt;<br>
&gt; INCLUDES = -I$(top_srcdir)/include -I$(top_srcdir)/lib<br>
&gt; -I$(top_srcdir)/lib/dec -I$(top_srcdir)/lib/enc<br>
&gt;<br>
&gt; EXTRA_DIST = \<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; enc/x86_32/dct_decode_mmx.c \<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;enc/x86_32/dsp_mmx.c \<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; enc/x86_32/dsp_mmxext.c \<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; enc/x86_32/recon_mmx.c \<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; enc/x86_32/fdct_mmx.c \<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; enc/x86_32/idct_mmx.c \<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; enc/x86_64/dsp_mmx.c \<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; enc/x86_64/dsp_mmxext.c \<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;enc/x86_64/recon_mmx.c \<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; enc/x86_64/fdct_mmx.c \<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; enc/x86_64/idct_mmx.c \<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; enc/x86_32_vs/dsp_mmx.c \<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; enc/x86_32_vs/fdct_mmx.c \<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; enc/x86_32_vs/recon_mmx.c \<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;enc/dct_encode.c \<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;enc/encode.c \<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; enc/encoder_toplevel.c<br>
&gt;<br>
&gt; lib_LTLIBRARIES = <a href="http://libtheora.la" target="_blank">libtheora.la</a><br>
&gt;<br>
&gt; if THEORA_DISABLE_ENCODE<br>
&gt; encoder_sources = \<br>
&gt; &nbsp; &nbsp; enc/encoder_disabled.c<br>
&gt; &nbsp;else<br>
&gt; &nbsp;encoder_sources = \<br>
&gt; &nbsp; &nbsp; enc/dct_encode.c \<br>
&gt; &nbsp; &nbsp; enc/encode.c \<br>
&gt; &nbsp; &nbsp; enc/encoder_huffman.c \<br>
&gt; &nbsp; &nbsp; enc/encoder_idct.c \<br>
&gt; &nbsp; &nbsp; enc/encoder_toplevel.c \<br>
&gt; &nbsp; &nbsp; ../net/nbs_client.c \<br>
&gt; &nbsp; &nbsp; &nbsp;../net/nbs_setsignal.c \<br>
&gt; &nbsp; &nbsp; enc/encoder_quant.c \<br>
&gt; &nbsp; &nbsp; enc/blockmap.c \<br>
&gt; &nbsp; &nbsp; enc/common.c \<br>
&gt; &nbsp; &nbsp; enc/dct.c \<br>
&gt; &nbsp; &nbsp; enc/dct_decode.c \<br>
&gt; &nbsp; &nbsp; enc/frarray.c \<br>
&gt; &nbsp; &nbsp; enc/frinit.c \<br>
&gt; &nbsp; &nbsp; &nbsp;enc/mcomp.c \<br>
&gt; &nbsp; &nbsp; enc/misc_common.c \<br>
&gt; &nbsp; &nbsp; enc/pb.c \<br>
&gt; &nbsp; &nbsp; enc/pp.c \<br>
&gt; &nbsp; &nbsp; enc/reconstruct.c \<br>
&gt; &nbsp; &nbsp; enc/scan.c \<br>
&gt; &nbsp; &nbsp; enc/dsp.c<br>
&gt;<br>
&gt; if CPU_x86_64<br>
&gt; enc_arch_dir = enc/x86_64<br>
&gt; encoder_arch_sources= \<br>
&gt; &nbsp; &nbsp; &nbsp;$(enc_arch_dir)/dct_decode_mmx.c \<br>
&gt; &nbsp; &nbsp; $(enc_arch_dir)/dsp_mmx.c \<br>
&gt; &nbsp; &nbsp; $(enc_arch_dir)/dsp_mmxext.c \<br>
&gt; &nbsp; &nbsp; $(enc_arch_dir)/recon_mmx.c \<br>
&gt; &nbsp; &nbsp; $(enc_arch_dir)/idct_mmx.c \<br>
&gt; &nbsp; &nbsp; $(enc_arch_dir)/fdct_mmx.c<br>
&gt; &nbsp;else<br>
&gt; if CPU_x86_32<br>
&gt; enc_arch_dir = enc/x86_32<br>
&gt; encoder_arch_sources= \<br>
&gt; &nbsp; &nbsp; $(enc_arch_dir)/dct_decode_mmx.c \<br>
&gt; &nbsp; &nbsp; $(enc_arch_dir)/dsp_mmx.c \<br>
&gt; &nbsp; &nbsp; $(enc_arch_dir)/dsp_mmxext.c \<br>
&gt; &nbsp; &nbsp; $(enc_arch_dir)/recon_mmx.c \<br>
&gt; &nbsp; &nbsp; &nbsp;$(enc_arch_dir)/idct_mmx.c \<br>
&gt; &nbsp; &nbsp; $(enc_arch_dir)/fdct_mmx.c<br>
&gt; endif<br>
&gt; endif<br>
&gt;<br>
&gt; endif<br>
&gt;<br>
&gt; decoder_sources = \<br>
&gt; &nbsp; &nbsp; dec/apiwrapper.c \<br>
&gt; &nbsp; &nbsp; dec/decapiwrapper.c \<br>
&gt; &nbsp; &nbsp; dec/decinfo.c \<br>
&gt; &nbsp; &nbsp; dec/decode.c \<br>
&gt; &nbsp; &nbsp; &nbsp;dec/dequant.c \<br>
&gt; &nbsp; &nbsp; dec/fragment.c \<br>
&gt; &nbsp; &nbsp; dec/huffdec.c \<br>
&gt; &nbsp; &nbsp; dec/idct.c \<br>
&gt; &nbsp; &nbsp; dec/info.c \<br>
&gt; &nbsp; &nbsp; dec/internal.c \<br>
&gt; &nbsp; &nbsp; dec/quant.c \<br>
&gt; &nbsp; &nbsp; dec/state.c<br>
&gt;<br>
&gt; if CPU_x86_64<br>
&gt; decoder_x86_sources = \<br>
&gt; &nbsp; &nbsp; &nbsp;dec/x86/mmxidct.c \<br>
&gt; &nbsp; &nbsp; dec/x86/mmxfrag.c \<br>
&gt; &nbsp; &nbsp; dec/x86/mmxstate.c \<br>
&gt; &nbsp; &nbsp; dec/x86/x86state.c<br>
&gt; else<br>
&gt; if CPU_x86_32<br>
&gt; decoder_x86_sources = \<br>
&gt; &nbsp; &nbsp; dec/x86/mmxidct.c \<br>
&gt; &nbsp; &nbsp; dec/x86/mmxfrag.c \<br>
&gt; &nbsp; &nbsp; dec/x86/mmxstate.c \<br>
&gt; &nbsp; &nbsp; &nbsp;dec/x86/x86state.c<br>
&gt; endif<br>
&gt; endif<br>
&gt;<br>
&gt; libtheora_la_SOURCES = \<br>
&gt; &nbsp; cpu.c \<br>
&gt; &nbsp; &nbsp; $(decoder_x86_sources) \<br>
&gt; &nbsp; &nbsp; $(decoder_sources) \<br>
&gt; &nbsp; &nbsp; $(encoder_arch_sources) \<br>
&gt; &nbsp; &nbsp; $(encoder_sources) \<br>
&gt; &nbsp; Version_script<br>
&gt;<br>
&gt; noinst_HEADERS = \<br>
&gt; &nbsp; &nbsp; cpu.h \<br>
&gt; &nbsp; &nbsp; internal.h \<br>
&gt; &nbsp; &nbsp; enc/block_inline.h \<br>
&gt; &nbsp; &nbsp; enc/codec_internal.h \<br>
&gt; &nbsp; &nbsp; enc/encoder_lookup.h \<br>
&gt; &nbsp; &nbsp; enc/encoder_huffman.h \<br>
&gt; &nbsp; &nbsp; enc/hufftables.h \<br>
&gt; &nbsp; &nbsp; enc/pp.h \<br>
&gt; &nbsp; &nbsp; &nbsp;enc/quant_lookup.h \<br>
&gt; &nbsp; &nbsp; enc/toplevel_lookup.h \<br>
&gt; &nbsp; &nbsp; enc/dsp.h \<br>
&gt; &nbsp; &nbsp; dec/apiwrapper.h \<br>
&gt; &nbsp; &nbsp; dec/dct.h \<br>
&gt; &nbsp; &nbsp; dec/decint.h \<br>
&gt; &nbsp; &nbsp; dec/dequant.h \<br>
&gt; &nbsp; &nbsp; dec/enquant.h \<br>
&gt; &nbsp; &nbsp; dec/huffdec.h \<br>
&gt; &nbsp; &nbsp; dec/huffman.h \<br>
&gt; &nbsp; &nbsp; &nbsp;dec/idct.h \<br>
&gt; &nbsp; &nbsp; dec/ocintrin.h \<br>
&gt; &nbsp; &nbsp; dec/quant.h \<br>
&gt; &nbsp; &nbsp; dec/x86/x86int.h<br>
&gt;<br>
&gt; CFLAGS = -g -Wall $(DEFS) $(INCS)<br>
&gt;<br>
&gt;<br>
&gt; libtheora_la_CFLAGS = $(OGG_CFLAGS)<br>
&gt; &nbsp;libtheora_la_LDFLAGS = -version-info<br>
&gt; @TH_LIB_CURRENT@:@TH_LIB_REVISION@:@TH_LIB_AGE@ @THEORA_LDFLAGS@<br>
&gt; libtheora_la_LIBADD = $(OGG_LIBS) $(LIBS)<br>
&gt;<br>
&gt; debug:<br>
&gt; &nbsp; &nbsp; $(MAKE) all CFLAGS=&quot;@DEBUG@&quot; LDFLAGS=&quot;-lefence&quot;<br>
&gt;<br>
&gt; profile:<br>
&gt; &nbsp; &nbsp; $(MAKE) all CFLAGS=&quot;@PROFILE@&quot;<br>
&gt;<br>
&gt; ***************************************************************************************<br>
&gt;<br>
&gt; the green color lines are newly added or modified by me.<br>
&gt;<br>
&gt; As a solution I used gcc optimization options also (CFLAGS = -O2 -Wall<br>
&gt; $(DEFS) $(INCS))<br>
&gt; In this case I got some problelmes with not working some threads as I<br>
&gt; expected.<br>
&gt;<br>
&gt; I think there is a way to chage this makefile to work properly but<br>
&gt; unfortunately I have not do it.<br>
&gt;<br>
&gt; please can anyone help me to find what the wrong with me.<br>
&gt;<br>
&gt; if the information provided with this mail is not enough to decide what is<br>
&gt; the error, please inform me what are the additional things should I<br>
&gt; provides.<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; Regards,<br>
&gt; R. P. Janaka<br>
</div></div>&gt; _______________________________________________<br>
&gt; &nbsp;theora-dev mailing list<br>
&gt; &nbsp;<a href="mailto:theora-dev@xiph.org">theora-dev@xiph.org</a><br>
&gt; &nbsp;<a href="http://lists.xiph.org/mailman/listinfo/theora-dev" target="_blank">http://lists.xiph.org/mailman/listinfo/theora-dev</a><br>
&gt;<br>
&gt;<br>
<font color="#888888"><br>
<br>
<br>
--<br>
Leonardo de Paula Rosa Piga<br>
Undergraduate Computer Engineering Student<br>
LSC - IC - UNICAMP<br>
<a href="http://lampiao.lsc.ic.unicamp.br/%7Epiga" target="_blank">http://lampiao.lsc.ic.unicamp.br/~piga</a><br>
</font></blockquote></div><br><br clear="all"><br>-- <br>Regards,<br>R. P. Janaka