[Ffmpeg-devel] how to compile output_example.c
Turbo
sandeep_kr
Sun Aug 6 13:08:40 CEST 2006
Thanx for the quick reply.
On Sun, 6 Aug 2006, Luca Abeni wrote:
> Hello,
>
> On Sun, 2006-08-06 at 15:08 +0530, Turbo wrote:
>> The ffmpeg installation automatically compiles output_example.c and
>> generates the executable output_example.
>> But I have made a few changes into the source code and want to compile it
>> standalone. How to do it?
> does "make output_example" work?
It works on the original output_example.c present in cvs.
I think i will have to clarify a few things. I have tried converting the
output_example.c code into a simpler API using classes. I had this API
working very well with ffmpeg-0.4.9pre1-release. But now I tried changing
it to make it work with the latest CVS version. I incorporated some of the
easy changes like removing & operator from some places and changing . to
-> and chamging frame_rate to time_base.den, etc.
Line 337 to 347 of the latest output_example.c were not present in old
one. I added these lines. they are:-
337:if (img_convert_ctx == NULL) {
338: img_convert_ctx = sws_getContext(c->width, c->height,
339: PIX_FMT_YUV420P,
340: c->width, c->height,
341: c->pix_fmt,
342: sws_flags, NULL, NULL, NULL);
343: if (img_convert_ctx == NULL) {
344: fprintf(stderr, "Cannot initialize the conversion
context\n");
345: exit(1);
346: }
347: }
Also line 349 is now :-
sws_scale(img_convert_ctx, tmp_picture->data, tmp_picture->linesize,
0, c->height, picture->data, picture->linesize);
instead of the old one where we had a call to img_convert()
I incorporated all these changes. But then the compiler is reporting
sws_getContext and sws_scale as undefined while linking.
My API is in videoIO.h and videoIO.cpp and my main program is in
example_copy.cpp
Below is my Makefile:-
GCC = g++ -Wall -g
INCLUDES = -I /usr/local/include/ffmpeg/
LIBS = -lavformat -lavcodec -lavutil -lm -lz -ldl
all : example_copy
example_copy : example_copy.cpp videoIO.o
$(GCC) -o example_copy example_copy.cpp videoIO.o $(INCLUDES)
$(LIBS)
videoIO.o : videoIO.cpp videoIO.h
$(GCC) -c -o videoIO.o videoIO.cpp $(INCLUDES)
>
>> I tried doing:-
>> g++ -Wall -g -o output_example output_example.cpp -I
>> /usr/local/include/ffmpeg/ -lavformat -lavcodec
>> -lavutil -lm -lz -ldl
> Why are you using g++ instead of gcc? Which kind of changes did you
> apply to the code?
Explained above
>
>> But I am getting these errors:-
>> undefined reference to `sws_getContext(int, int, int, int, int, int, int,
>> void*, void*, double*)'
>> and
>> undefined reference to `sws_scale(SwsContext*, unsigned char**, int*, int,
>> int, unsigned char**, int*)'
> Are you sure that the avcodec, avformat, and avutil libraries that you
> are trying to link are really the latest one from svn? (maybe they are
> coming from a previous installation?)
I think I am using the latest svn. How to make sure?
Should I attach my code? Its almost same as output_example.c and
you wouldn't have to spend much time on it.
--
I do know everything, just not all at once. It's a virtual memory problem.
Home Page : http://students.iiit.ac.in/~sandeep_kr
Blog : http://sandy007smarty.blogspot.com
More information about the ffmpeg-devel
mailing list