-
Update from July 30th, 2012
sfeMovie 1.0 is available, see http://en.sfml-dev.org/forums/index.php?topic=8701.msg58578#msg58578
=============================
Update from March 15th, 2012
sfeMovie 1.0 RC1 is available, see http://www.sfml-dev.org/forum/viewtopic.php?p=48199#48199
=============================
Hello everyone,
Information update from 2011-05-12
I'm writing here to give you the latest news about the sfeMovie project.
sfeMovie is a small C++ library that lets you play movies in SFML based applications. It relies on SFML for the rendering process and FFmpeg for the decoding process. It supports both audio and video, and basic controls. This project has been written to work closely with SFML and tries to keep the same easy-to-use paradigm, while remaining coherent with SFML's conventions.
Information and download:
Most of the information is available through the wiki page (https://github.com/SFML/SFML/wiki/ProjectSfeMovie), including the download links (https://github.com/SFML/SFML/wiki/ProjectSfeMovie#downloads).
For now, sfeMovie is available to Windows and Mac OS X, and is in a beta state. Thanks to FFmpeg, sfeMovie can read many formats, including AAC, MP3, Vorbis, WMA, H.264, MPEG4, Theora, VP6 and WMV.
There is still a lot of work to do, but the current version already lets you use the main features.
I'm inviting you to test the library and write your feedback about bugs or any other issue you encountered. The bug tracker (https://github.com/Yalir/sfeMovie/issues) allows you to check the already-reported bugs or upcoming features and improvements.
As for the differences with the previous versions:
- all of the precompiled FFmpeg binaries have been dropped
- a script to compile everything for you has been added, it also allows you to exactly choose which decoders you want to enable
- FFmpeg is statically linked to sfeMovie, thus you don't have to care about FFmpeg dlls
- some minor bugs have been fixed
Ceylo
Original post:
Hellooo everyone,
I'm posting here to get some comments about a video class I'm currently working on. The purpose is to be able to display a video with its audio soundtrack, and to get something as easy to use as sf::Music.
It's supposed to work on all the OSs supported by SFML and has been currently successfully tested on Windows and Mac OS X. It uses SFML 1.6 and FFmpeg 0.6.1. It can be used to play videos but also to play music formats that are not supported by SFML (such as MP3).
Here is a short example on how to use the sfe::Video class :
int main()
{
sf::RenderWindow window(sf::VideoMode(640, 480), "SFE Video");
sfe::Video video;
if (!video.OpenFromFile("video.avi"))
return 1;
video.Play();
while (window.IsOpened())
{
sf::Event ev;
while (window.GetEvent(ev))
{
if (ev.Type == sf::Event::Closed)
window.Close();
}
window.Clear();
window.Draw(video);
window.Display();
}
return 0;
}
The sources, dependencies and project files (currently CodeBlocks 10.05 project for Windows and Xcode project for Mac OS X) can be downloaded from here (http://github.com/Ceylo/Yalir/archives/master).
Currently known issues :
- if your computer is too slow to decode the video, no video frame will be skiped, thus the video will get late
- video decoding is still not very efficient on high resolution videos on Windows (such as 1280x720)
Currently implemented features :
- video support with these formats* (short list) : FLV, H264, MPEG4, Theora, WMV
- audio support with these formats* (short list) : AAC, AC3, FLAC, MP3, PCM, Vorbis, WMA
- audio and video synchronization**
- getting some properties such as the video duration, size and framerate
- setting the sound volume
- scaling the video to fit a any frame (and every other sf::Drawable's features)
- basic video controls : play, pause, stop
Once the class gets stable enough, it'll be posted on the wiki :) .
* this list depends on the configuration options you use when building the FFmpeg binaries. It can includes GPL and non-free dependencies, but the default FFmpeg configuration is under the LGPL licence. See Video.h for a more detailed list of the video and audio formats supported with a basic build.
** video is synchronized until your CPU is fast enough to support the requested video framerate. If your CPU is faster, the video will keep a normal speed, but if it's too slow the video will get late. There is currently no support for skipping frames when the video decoding is late.
-
Some news here. I've added the following methods to the sfe::Video class:
- HasAudioTrack()
- HasVideoTrack()
- GetVolume()
- GetSampleRate()
- GetChannelsCount()
- GetPlayingOffset()
- GetImageCopy()
So.. nothing really interesting except maybe the latest method : GetImageCopy(). It allows you to get a copy of the current image of the video. I've just been doing some testing and.. it works quite well with small resolutions. With a video resolution of 320x240 px and live file saving, there's about 1 MB/s written to the disk and each image file weights about 120 KB. But on bigger video resolutions, you will definitely notice the difference.
I'm also thinking of a way to modify the next picture to be displayed right after it's been decoded, thus you can apply some effects like shader effects. I think I'll do something similar to how sf::Thread works : provide a function pointer or use inheritance. Anyway, if you wish to modify the image, you'll have to handle raw RGBA data.
-
Hey, this sounds great! A video implementation in addition to SFML is really interesting. I especially appreciate that you are trying to design an API that is close to SFML's. It will make the usage more intuitive.
Keep us up to date! :)
-
Thanks for the comment !
If you want to get the latest information and can read French, here is the original topic (http://www.sfml-dev.org/forum-fr/viewtopic.php?t=3131).
But don't worry, I'll still post all of the updates here too though :) .
-
Hi Celyo,
Wow, your Video class is better than mine :)
The only thing I like better about mine is that the my Video doesn't contain a Sprite within, and I defined implicit cast (operator const sf::Image&), so that the video can be used as an image and linked to many sprites.
Also, I hope you don't mind, I blatantly copied a little part of your code into mine. The part in which you calculate the frame rate. My frame rate calculation was wrong (I think it changed in ffmpeg).
Xorlium
-
Well, I don't really mind until you write you took some parts from another author. Anyway I'm pleased, it means my work looks good to you :D .
Otherwise, I don't really understand why you would like to link the image to many sprites ? I mean, do you have a example where this would be useful ?
As for the news, it's been decided there would not be any support for shader effects on the video, especially because we could not find any example where the users NEED to apply an effect to the movie only. And as SFML already supports effects on the whole window, it means less useless work for me :) .
For now, I have to change the 'Video' name to 'Movie' as suggested on the French forum and fix the Move::Stop() method that does not go back to the beginning of the movie. I also have a few surprises that, I hope, you'll appreciate :P .
By the way, as sf::SoundStream in SFML 1.x does not support audio seeking, I may not implement movie seeking for now.
-
Hi Ceylo,
I mentioned in the download (wiki), but not in the actual source code. Should I?
Anyway, in my project, I use many sprites with the same video all the time. And I also use shaders on the video, and that comes for free with my design, since the programmer has full control on when and where to render the video.
Imagine the same video being played in many different parts of the screen, or the "game world". Maybe it's a special effect, or a video texture.
And it's not hard to do (it's actually easier), check it out: http://www.sfml-dev.org/wiki/en/sources/video_integration
Anyway, good luck.
Xorlium
-
It does look fine to me as it is now. Giving the name on the wiki and explaining what has been used is really enough :) . Anyway, it's more like something I appreciate rather than an obligation.
As explained by the zlib/ligpng licence :
The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
Well.. here you only used a really small part of it, but I think it's similar. At least, that's the idea.
As for your project, do you mean you use movies to display animations ? Do you have a screenshot or something like that to show us ?
It does look like you planned to use your movie class for a very specific use (which may also explains why you do not support audio), whereas I'm trying to do something rather general and for a basic use : display an introduction movie for a video game, or display transition movies.
Edit: by the way, I'm not saying I did all of the work too. The first work I've been noticing is the video integration tutorial (http://www.sfml-dev.org/wiki/fr/tutoriels/integrervideo) posted by timidouveg, although it's mostly copied from the ffmpeg tutorial with some improvements especially as for the deprecated functions. I admit I did not post any thanks for now, but you can be sure they will be present when sfe::Movie get posted on the wiki.
-
Hi Celyo,
Sure, but don't laugh ;) Here's an image:
http://grola.no-ip.org/snapshot.png
The two weird-looking things (pointed to in red; I realize most of it is weird looking :)) are video textures, generated from a video source file (in mkv format) and shaders, so that it can take different shapes.
I made mine for this particularly, but I realized it can be used as a "moving texture".
But for example, say someone wants to add subtitles to the intro movie. How would they do it with yours?
Of course, the problem with mine is that it doesn't have any sound :)
Xorlium
-
Well, as for the subtitles, I guess the developer would have to hardcode it in the movie, or display it with a sf::String on the movie's image. FFmpeg can also read the subtitles from the movie's file, but I didn't add any support for this point.
So, from what I understand, you used a movie to display an animation. Wouldn't a basic image sequence or animation sheet be easier to use ? You can also apply shaders with these.
-
Hi Celyo,
Well, considering the image size is about 700x700 and there are about 10000 frames, it really is better with video :)
The thing is, I'm thinking of a video as an sf::Image that just happens to change over time.
For simple animations with 25 frames or so, sure, multiple images might be better, but when you get in the thousands...
And then if you have a consistent way to interchange videos and images, then why not?
Xorlium
-
Ok I understand better now. Indeed I had never considered so big and long animations :D . But I'm still curious about why you need these. I mean, on your screenshot, I can only see a animation that is about 100x100 pixels, and I don't really realise why you would need a 10 000 frames' animation. It represents an animation of more than 6 hours with 25 FPS :o .
And can you easily change the video ? Because encoding 6 hours is.. well... quite long :mrgreen: . Whereas with basic animations you can change only the concerned image.
-
Check your math there :)
10000 frames at 25fps is 6 minutes, not 6 hours :) And it takes about 1-2 hours to generate (I generate them using libnoise), and another hour or so to encode.
On the screenshot I showed a zoomed out version (in my game, you can zoom in and out) so that you'd see both "nebulas".
Xorlium
-
Oh well, please forgive me for the 6 hours, I'm a bit tired :mrgreen: .
And sooo.. you don't mind having to wait for.. 2-3 hours to get your movie ready to use ? Did you do some testing with basic animations ?
-
Hi Celyo,
Yes, I tried first to generate it on the fly, but it dropped my framerate abruptly. I tried maany different ways until I came to this one.
The reason I must have 10000 frames is that I wanted it to be cyclical. Libnoise generates coherent 3d noise, so what I do is I take a torus and generate it like that, so that the last frame is the same as the first frame. If I take less than that many frames, it "moves" too fast (or too choppy if I decrease fps), and if I decrease the radius of the Torus, I get the right of the image moving way faster than the left.
Also, I encoded the video a long time ago and haven't had to re-encode since. And at the beginning I generating it on the fly, which meant that at least for small (like 200x200 pixels) it was still fast enough for me to test and tweak as much as I wanted in real time. Once that worked well, I just scaled up. Nailed it in the second try :) (I did have to encode two times because I was using only 1000 frames and that made it jump way too fast, but whatever)
Xorlium
-
Time for some news! :D
What has been done since last time
- sfe::Movie::Stop() is working fine now. It goes back to the beginning and you can resume playing right after stopping the movie.
- I've been working a lot on performance optimization. Now if the video decoding is late, it is shortened as much as possible (the image is still decoded, but not resized, not converted, not loaded, and not synchronized ; in other words, it's skipped). Thus audio and video keep synchronized. See the second part of this post for more information about this point.
- I've added sfe::Movie::ResizeToFrame() to easily resize the movie. It's main interest is that you *can* preserve the original movie ratio. If you choose to do so, the movie will be centered according to the given frame. Thus you can really easily get the right position and size for your movie, so that it best fits your screen when you want to play a movie in full screen mode for example.
- I've also updated the Xcode (Mac OS X), and Code::Blocks (Windows) project files to match the file name changes.
Performances
I did a lot of testing to find which parts in the code were taking too much time. These tests have been done on my personal laptop :
Intel Core 2 Duo 2.4 GHz, Intel GMA X3100 graphic card with 144 MB, 2 GB of DDR2 RAM.
Here are the results :
On Mac OS X:
- 31.6% : sf::Sprite::Draw()
- 16% : video decoding (avcodec_decode_video2())
- 10.1% : synchronization between the main thread and the video decoding thread with mutexes (sf::Lock)
- 7.7% : image loading (sf::Image::LoadFromPixels())
- 4.4% : image conversion from YUV to RGBA format (sws_scale())
On Windows (same computer) :
- 38% : sf::Sprite::Draw()
- 18.3% : video decoding (avcodec_decode_video2())
- 18.4% (!!!) : synchronization between the main thread and the video decoding thread with mutexes (sf::Lock)
- 6.1% : image loading (sf::Image::LoadFromPixels())
- 6.3% : image conversion from YUV to RGBA format (sws_scale()) (sws_scale())
As you can see, on Windows the synchronization is taking twice as much time as on Mac OS X. I've no explanation about this for now. But to sum it up : a 1280x544 definition movie plays fine on both Mac OS X and Windows, but as for the 2048x872 definition movie... it works fine on Mac OS X (no frame skipped) but not on Windows (frames are skipped every 1 or 2 seconds).
To my mind, this is still quite good, 1280x544 is still a good definition, and I don't have a very powerful laptop, this should be usable for higher definition movies with computers that are just a bit more powerful. I'll of course try to improve the performances for Windows if I can find a solution.
-
I've been doing a little bug fix : when pausing/resuming the movie playback several times, the audio track was getting late. This is due to the fact that sf::SoundStream often plays again the last samples that were being played right before performing the pause. Thus now audio and video should ALWAYS keep synchronized.
This was the only remaining bug I knew as far as Mac OS X and Windows are concerned. As for Linux, there's been a crash reported and I still need to fix it. After this is done, I think I'll post sfe::Movie on the wiki.
Now... I would like to get your feedback for a few questions :
- for now, Pause() pauses the movie playback if it's playing, and resumes it if it's paused. This is the behavior I find the most logical but I realised sf::Music was not working that way, and I would like to know which behavior you prefer.
- the second point is about the error/warning messages. With the last bug fix, there are even some more messages because the video track is catching up with the audio track. But... there messages are not really useful. They are actually mostly used for debug purposes. So, even if these messages are outputted to std::cerr only, I would like to know whether you think I should remove them. They could be useful when you're developping an application and want to check whether your movie definition is too high for a basic computer. What do you think of it ?
- and last but not least, I've start a blog in order to make some advertisement for me and SFML. Till now I wrote an article (in english) to sum up what is the sfe::Movie project. If you're interested, you can have a look at it at http://ceylow.wordpress.com/ . I'm probably going to reuse what I wrote in this article for the project's presentation on SFML's wiki. I also plan to write another article, more focused on how sfe::Movie works, rather than what is does. So... if you have any comment, don't hesitate, I'm listening to you! :) (I hope my English is not too bad :roll: )
-
Some news here :) .
1. As for Ubuntu, I wasn't able to make a bootable USB stick (it has several partitions and my laptop won't boot from it...). Thus I asked Ubuntu.org for a CD, and I'll get it.. when I get it.
2. I'm looking for two persons to help me to develop sfe::Movie. The first person must be a Windows developer and the second one a Linux developer. If one works regularly on both and can do both, it's even better.
The goal is to do testing to find out what's slowing down the video playback (this may depend on the OS and hardware). You'll also have to test sfe::Movie to the limit so that we can exactly know what's its behavior in these conditions and to find out possible bugs (one has been reported on Linux but I still don't know why it is happening). This testing will also help us to improve the overall performances with high resolution movies and/or with "slow" computers.
I'd also like to provide the simplest integration, thus the developer will choose the way the library should be distributed for the OS he's using. It may seem obvious to the one using the concerned OS, but to me it does not as for Windows and Linux.
Note that I *could* do most of that work, but it would take time.. that's I don't have. And as I want sfe::Movie to reach a mature state, I'll focus on Mac OS X and let the rest of it to one or two other developers.
To the one who may participate, note that's you'll have to use Git to post your work.
3. As for the improvements, here are my thoughts till now.
I'm thinking of decreasing the time during which the displaying and decoding threads are locked. I plan to lock the mutexes for the time of an image swap instead of an image loading. Thus there'll be a front and a back image directly handled by sfe::Movie. This should allow the class to better use the processing units and provide an even smoother video playback.
I'm also thinking of letting the possibility to define a target definition. For example if I have a movie with a 2048x872 definition and my screen's definition is only 1280x800, copying and transferring pictures of the original size is useless. This would also let the final user, if he's running a slow computer, and the developer does not want to provide video files for each definition, get better results. This is not as efficient as providing the video files for several definitions but it may still be a significant improvement with very few efforts.
-
News again :) .
1. The source files have been updated and can be used to compile sfe::Movie against SFML 2.0. I didn't make any change to the headers and libraries on the Git repository, thus you'll have to replace them with the SFML 2.0 version in order to compile sfe::Movie for this version.
2. I've also committed a very small change that greatly improves the fluidity* of the video playback. This change applies to both SFML 1 and SFML 2.
3. Danman is helping me on the Linux version of sfe::Movie (still crashes quite often for now).
Sooo.... still many things to do, but it's still getting better and better ! :)
*Is it the right word to say the video playback is much more fluent ?
-
*Is it the right word to say the video playback is much more fluent ?
If you mean that the playback is smoother than before then "improves the fluidity" makes sense. I wouldn't say playback is "fluent" though, just smooth, or maybe consistent. :)
-
Ok, so.. the fluidity of the video playback has been improved ^^.
(smoothness is fine too?)
-
Some news again :P
Right now I'm trying to provide binaries for each OS so that you do no more have to deal with compiling sfeMovie (I admit it's not so obvious). As for Mac OS X, the library is ready. As for Windows.. I'm still working on it and I'll try to get it ready next week-end.
Otherwise, I've noticed a few issues with audio/video sync. When video is late, it correctly catches up with the movie timeline, but not audio. I hadn't noticed this earlier because audio processing is much lighter and hardly ever blocked as samples are buffered and ready to use even if the program is freezed.
One way to "fix" this issue is pausing then playing. Because at playing time it'll synchronize according to the audio timeline. However I cannot always synchronize to the audio timeline because it's not precise enough (it's not updated often enough). Thus I would have to implement seeking.
I could also manually skip some samples, as I do for the video track. But I think I'll just implement seeking as it's also needed.
I guess that'll be the first task for v1.1.
-
Where can i get my hands on this?
Im working on a project for my car, basically an embedded computer. Writing the shell in SFML, and i need video playback support. It will be running Linux Debian on ARM Architecture, is linux supported?
How much work would it be to be able to seek the videos? If its not too hardcore lowlevel coding i might be able to pull it off.
-
Hello Haikarainen,
Thanks for your interest :) .
You're quite true, I didn't even give a link to the Git repository...
Here it is : https://github.com/Yalir/sfeMovie
I didn't really work on the Linux port, but the developer who wanted to help told me it often crashed. Thus the short answer is no. However you can notice that this project relies on portable libraries only, thus you may be able to fix the bug. Note that I've never tested sfeMovie on an ARM architecture.
As for building sfeMovie, the shell script supposed to do so is not ready yet, so here is what you have to do :
1. Build FFmpeg static libraries
2. Put these libraries in sfeMovie/deps/ffmpeg-build (create the directory if needed)
3. Run CMake and the EDI/compiler you chose to use (probably make)
As for seeking, I don't know how much time you'll need. There is no hardcore coding, it's all about properly using FFmpeg and making the rights changes to sfeMovie.
-
As a side note, here is a wiki page I had started : https://github.com/SFML/SFML/wiki/ProjectsfeMovie
It's still incomplete but you may find some useful information.
-
Hello Haikarainen,
Th.. blablab text.
Ok, shouldn't be too hard. If I ever get the code working perfectly on a linux platform I will notice you :)
-
Indeed it would be really nice of you! :D
I wish I had the time to get sfeMovie work perfectly everywhere and support every important features and get the world peaceful and.. but well no, for now I don't have enough time :oops: .
-
Hello everyone,
Information update from 2011-05-12
I'm writing here to give you the latest news about the sfeMovie project.
As you may know, sfeMovie is a small C++ library that lets you play movies in SFML based applications. It relies on SFML for the rendering process and FFmpeg for the decoding process. It supports both audio and video, and basic controls. This project has been written to work closely with SFML and tries to keep the same easy-to-use paradigm, while remaining coherent with SFML's conventions.
Information and download:
Most of the information is available through the wiki page (https://github.com/SFML/SFML/wiki/ProjectSfeMovie), including the download links (https://github.com/SFML/SFML/wiki/ProjectSfeMovie#downloads).
For now, sfeMovie is available to Windows and Mac OS X, and is in a beta state. Thanks to FFmpeg, sfeMovie can read many formats, including AAC, MP3, Vorbis, WMA, H.264, MPEG4, Theora, VP6 and WMV.
There is still a lot of work to do, but the current version already lets you use the main features.
I'm inviting you to test the library and write your feedback about bugs or any other issue you encountered. The bug tracker (https://github.com/Yalir/sfeMovie/issues) allows you to check the already-reported bugs or upcoming features and improvements.
As for the differences with the previous versions:
- all of the precompiled FFmpeg binaries have been dropped
- a script to compile everything for you has been added, it also allows you to exactly choose which decoders you want to enable
- FFmpeg is statically linked to sfeMovie, thus you don't have to care about FFmpeg dlls
- some minor bugs have been fixed
Ceylo
-
I downloaded the binaries for Windows, but in the "lib" directory there is no libsfe-movie.lib file to link against. What am I missing? I really don't want to install GCC, MinGW etc to recompile this. I have no experience with them and it'll turn into a can of worms...
Thanks
-
For now the only supported compiler is GCC. Supporting the other compilers is among the many things to do. That's why there is no .lib. The provided package only contains the libraries for GCC.
-
Ahh ok, thanks very much :)
-
Hello!
Here are some news about the project :) . This time the updates mainly target bugfixes. And at the time I'm writing this, there is no more known blocking bug!
As for the fixed bugs:
- there's no more shimmering while rendering on Windows
- there's no more freeze at the end of the movie playback
- there's no more freeze when replaying the movie after its end
- there's no more freeze when replaying the movie after a manual Stop()
- there's no more random freeze when pausing/playing the movie
As for the other changes not directly related to bugs:
- the time system has been switched to milliseconds, in order to follow SFML 2.x updates
- the underlying implementation now further relies on threads : the image swap at the right time and the video decoding now occur in different threads
- when opening a video file, the first image is automatically loaded before you call Play(), in order to display this image even if the movie playback hasn't started yet
- pausing/resuming is now a little bit more efficient as it does no more involves stopping and restarting a thread
And the only remaining bug:
- there's still nothing done when the audio playback gets late
What I'm currently working on but which is still not ready:
- Visual Studio support for Windows
So, if you want to give a try at this latest update, I invite you to have a look at the sfeMovie wiki (https://github.com/SFML/SFML/wiki/ProjectsfeMovie) :) .
-
Hello!
Sweet update! will check this out immediatly and reply with some feedback ;D
Edit: Fail :( Couldn't play any of the 28 video files i had on my computer because of codec-errors :/ and the compileityourself-thing wasnt a road i felt like taking today.
-
What did you use to read your files?
If you used the beta binaries, they only include decoders for the flac, vorbis and theora formats. This is for patents reasons, because I cannot distribute the other (compiled) decoders without paying royalties.
That's why everything is provided to build sfeMovie with the decoders you want.
Thus, if you want to give it a try, you'll have to find OGV video files, or build sfeMovie yourself.
PS: note that the provided beta binary is from may 12th, which is not the updated version I was talking of in my last post.
-
Sounds like really good progress is being made, I can't wait to get this running under Visual Studio, this will make a BIG different to the stuff I am working on.
On another note, do any of the included decoders support transparency?
I have animations I need to play, but over the top of the rendered scene. Rendering out a few thousand frames is a bit time-consuming :p
Thanks
-
Hi slotdev,
Thanks for your comment :) .
As for the decoders that support transparancy, you should have a look at the Sorenson Video 3 codec. It does look like it is indeed supported by FFmpeg (named as "svq3"), thus by sfeMovie too. It has never been tested though.
Ceylo
-
Ah that's fantastic, thanks for the info!
-
sfeMovie is not ready yet on Visual Studio, is it?
You define the macro sfe_movie_EXPORTS, although you use SFE_EXPORTS in the code. And it seems like some libraries aren't linked yet, I get unresolved symbols to av_free() etc.
-
Indeed it isn't, though I have no unresolved symbols. Actually I succeeded in making the sfeMovie Visual Studio libraries but it crashes at runtime. And even if sfe_movie_EXPORTS is defined, SFE_EXPORTS is supposed to be defined too.
Did you use the build.sh script to build sfeMovie?
Because the purpose of this script is to build FFmpeg and make the project file for your IDE through CMake, plus a little explanation for Visual Studio:
The files required to build sfeMovie for Visual Studio have been created.
Now run Visual Studio, open sfeMovie.sln and follow these instructions:
- go to the sfe-movie properties panel. There, go to Linker > Input and add the following lines:
libavdevice.a
libavformat.a
libavcodec.a
libavutil.a
libswscale.a
libz.a
libgcc.a
libmingwex.a
libmoldname.a
- build the solution
Edit: hum looks like I forgot to commit my latest CMakeLists.txt file, that defines SFE_EXPORTS. You should manually add this definition for now.
-
Did you use the build.sh script to build sfeMovie?
No, I only ran CMake. How can I execute a .sh file without a Linux environment/emulator?
And don't you want to build FFmpeg with CMake, too?
-
Well.. the FFmpeg developers only provided a configure script, and I need this script to enable only the decoders that the user wants to use (and possibly pay the royalties). Thus no, I can't use CMake to build FFmpeg.
To run the build.sh script, you must use MinGW (download here (http://sourceforge.net/projects/mingw/files/Automated%20MinGW%20Installer/mingw-get-inst/)) as stated on the wiki (https://github.com/SFML/SFML/wiki/ProjectsfeMovie#build).
-
Can't CMake invoke the configure script? It would certainly be good if you didn't force every Windows user to install those Linux tools just to build the library... Maybe you can also add binaries or links to websites where users can find them.
I think it is not MinGW, rather MSYS, isn't it? I have downloaded the "msys/console" binaries from here (http://sourceforge.net/projects/mingw/files/MSYS/console), and guess what's there: A Linux shell file! Is that some kind of "to understand recursion you must first understand recursion" joke? The documentation (which is stored in an extension-less file, probably to annoy Windows users more) recommends console2 (http://sourceforge.net/projects/console/), the only problem is that this is a Windows console, of which I already have cmd.exe.
[Edit] Okay, I have now installed the whole MSYS, in spite of my initial hope that the shell could come standalone. To ensure that this isn't getting boring, the configure script and with it cmd.exe crashes (host for console window stopped working). With option 4 (use all codecs), I get "./configure: fork: Invalid argument", but cmd.exe stays alive.
Have you ever encountered these issues? By the way, I tried both sh.exe and bash.exe.
-
I dunno whether CMake could invoke this script, but anyway FFmpeg needs a recent MinGW runtime to build.
And that's why MSYS is not suitable for building sfeMovie. MSYS fails in passing the whole configure tests because of a too old runtime version. That's why a gave a link to MinGW and not MSYS.
As for giving a link to prebuilt versions, I dunno whether this is a good idea. Because these versions usually include all the decoders and the user thinks everything is fine. But what the user often doesn't know, is that if he/she distributes his/her software program with sfeMovie, he'll probably have to pay royalties or get sued, because not all decoders are free to distribute.
By the way, I should probably add a check like "I have read the above notice and I am aware of the involved responsibilities (among which, the fact I may have to pay royalties for some decoders)".
-
Thanks for the explanation. Sorry for the annoying questions, but how do I actually build the configure scripts with MinGW? I have already installed MinGW to test my code on g++, but I can't find a shell or a tool to run .sh files apart from those in MSYS. Do you happen to know the name of the executable with which I can execute your build script?
-
Your questions are NOT annoying! Actually it rather shows what anyone could wonder, and what's make sfeMovie tricky to use. And as I want it to be the most easy to use as possible... you're welcome :D .
As for your question, I've switched to Windows and... I'm a bit surprised. You were right with MSYS, but it's the one provided with MinGW :P : C:\MinGW\msys\1.0\msys.bat
-
Thank you. Now msys.bat can be started after I moved it to the MinGW/msys/bin folder. I really don't understand why there is always a user-side configuration necessary before something works. It wouldn't have been difficult at all to set the MSYS working directory or to put the batch file to the right place. :roll:
Anyway, now it doesn't crash, but I get the following error when running build.sh from msys.bat:
Enabled outdevs:
License: LGPL version 2.1 or later
Creating config.mak and config.h...
config.h is unchanged
libavutil/avconfig.h is unchanged
libavcodec/../subdir.mak:96: *** missing separator. Stop.
*** an error occured, aborting.
The line in this makefile contains the following code:
$(eval $(RULES))
-
I didn't have to move any file to get the MinGW shell working. And I remember having your error.. but I can't remember how I got it fixed exactly. I would just recommend you to use MinGW with the link I gave.
I don't know which runtime version you're using and why you needed to manually add the msys.bat file.
-
I don't know which runtime version you're using and why you needed to manually add the msys.bat file.
I used the most recent MinGW version of the link you gave. And I just reinstalled MinGW with MSYS. The msys.bat probably didn't work directly because my path contains spaces (btw another limitation I can't stand).
For sfeMovie/build.sh, I also set up a path without spaces, but I still got the same error when building. I also tried to insert a tab before that line, to no avail... :?
-
Ok, I've no other idea for now. I'll remove MinGW, reinstall it and fully download sfeMovie and see what I get as soon as I have a bit more time.
-
So.. here is what I've done:
- remove MinGW
- install MinGW from the link I gave (and select MSYS base system in the options of what-is-to-be-installed)
- download a zip of the latest sources of sfeMovie
- run "./build.sh windows" from the MSYS shell provided by MinGW
And it got to the compilation phase without any issue. Thus I don't know what's wrong with the build process on your computer. I let the default installation path for MinGW and the sfeMovie archive has been extracted to the desktop.
-
When I don't check the 3rd box "MinGW developer toolkit" at the installer, I get errors because pr.exe isn't installed. I tried to install everything multiple times (with both the second box checked and unchecked). If there is no space in the path, msys.bat is able to start, but I still get the above error... I don't know whether it is a OS-related issue, I use Windows 7 64 Bit. The PATH environment variable contains both MinGW/bin and MinGW/msys/1.0/bin.
Thanks a lot for the support in this thread. I will possibly try it after some time again... If I should find out something, I will post it here.
-
Oh, I didn't know for the pr thing, thanks! Till know I just let these pr errors as they didn't prevent me from building sfeMovie.
As for the OS, I'm using Windows 7 32 bit, I don't think it's related. I've checked my path though, and here's what I had:
C:\Program Files\Common Files\Microsoft Shared\Windows Live;
%SystemRoot%\system32;
%SystemRoot%;
%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;
C:\Program Files\Windows Live\Shared;
C:\Program Files\CMake 2.8\bin;
C:\Program Files\CodeBlocks\MinGW\bin;
C:\Program Files\CMake 2.8\bin;
C:\Program Files\GnuWin32\bin;
c:\Program Files\Microsoft SQL Server\100\Tools\Binn\;
c:\Program Files\Microsoft SQL Server\100\DTS\Binn\;
C:\Program Files\QuickTime\QTSystem\
I dropped these to see whether it was related to the current issue:
C:\Program Files\CodeBlocks\MinGW\bin;
C:\Program Files\CMake 2.8\bin;
C:\Program Files\GnuWin32\bin;
But it did not change anything (still building fine).
And if I do echo $PATH after that change I get:
.:
/usr/local/bin:
/mingw/bin:
/bin:
/c/Program Files/Common Files/Microsoft Shared/Windows Live:
/c/Windows/system32:
/c/Windows:
/c/Windows/System32/Wbem:
/c/Windows/System32/WindowsPowerShell/v1.0/:
/c/Program Files/Windows Live/Shared:
/c/Program Files/CMake 2.8/bin:
/c/Program Files/Microsoft SQL Server/100/Tools/Binn/:
/c/Program Files/Microsoft SQL Server/100/DTS/Binn/:
/c/Program Files/QuickTime/QTSystem/
Dunno whether this can be of any help. I'd love to know how you fix this, it'll be useful to other users.
Edit: I still can't get your issue but I noticed that when you want to build the libraries for GCC, you need to select the C++ compiler when installing MinGW. It was working fine for me because I also had CodeBlock's MinGW in the path and it was the one being used, but otherwise CMake doesn't find the C++ compiler.
-
Hi
I really need to start using sfeMovie very soon. I use VS 2005. I think I have to recompile the Theora libs and also the sfeMovie code?
Do I have to use CMake at all??
Thanks
-
Hi slotdev,
You should first have a look at the project's wiki : https://github.com/SFML/SFML/wiki/ProjectsfeMovie
You'll probably get the answer to most of your questions there, including how to build and use sfeMovie.
But note that even if I'm working on it on my free time, Visual Studio is still not supported and I can't give you any release date.
Ceylo
-
Some news:
- I still can't get sfeMovie to work with Visual Studio. Still investigating. What's weird is that I *can* make a library that uses both FFmpeg and SFML within Visual Studio, and use that library, but not sfeMovie...
- sfeMovie works fine on Linux! This is probably due to the previous changes as I haven't especially worked on this port. However I have noticed a small bug : the video freezes when using pause/play. I know what's wrong and it shouldn't take much time to be fixed.
-
Hmm that is strange. What kind of library are you trying to make (static .lib or DLL?) and what kind of error messages are you getting?
What version of VS are you using?
Maybe I can try here. Can you can ZIP everything you have so far for the VS version, and send me a link?
Thanks
Ed
-
Yup, I'll commit the latest changes as soon as I've some time and let you know so that you can give it a try (it's kinda mess for now). I tried both dynamic and static libraries, using Visual C++ Express 2010.
-
Thanks. I really need to get this working and into my project ASAP so anything you can do is appreciated :)
-
Should be ok for testing (and crashing) now. Download the zip file from https://github.com/Yalir/sfeMovie/zipball/master . Then perform the normal build.sh thing (see the sfeMovie wiki).
This will build static FFmpeg libraries and create a solution for Visual Studio. The build.sh script gives you some notes about some flags you need to manually set in Visual Studio. Then build the library with Visual Studio and you're done. This will produce a dynamic sfeMovie library with FFmpeg statically included.
If you want to use FFmpeg dynamic libraries, copy the configure lines when the build.sh script builds FFmpeg, and add --enable-shared. Then in Visual Studio replace the previously added .a libraries with the newly generated FFmpeg .lib files. When using the .lib files, you don't need libz.a, libgcc.a, libmingwex.a or libmoldname.a.
Note that I do not use the latest SFML 2.0 files, maybe it works with these too as I don't use sf::Input. There are included SFML binaries and headers from the revision I used.
-
Thanks! I've built it, and the (debug...) sfe-movie.dll is 17mb! Ouch :)
Anyway, I will look at it soon, and update to SFML 2.0.
Ed
-
Have you got some time to test the sfe-movie dll and see what's wrong with it?
By the way, would be interesting to know if you did something special in order to build the dll, as it doesn't seem to have been that easy for Nexus.
Ceylo
-
A quick note for those who would still like to use sfeMovie with a recent version of SFML 2, as the latest sfeMovie commit doesn't work fine :
- download this version : https://github.com/Yalir/sfeMovie/zipball/1c249813dafaae28309512e871054eace14d5d16
- go to src/Movie_video.cpp ligne 40, and set GL_HACK to 1 (instead of 0) then build as usual
I'm a bit busy and can't do more for now.
-
A little note to tell you I stop working on sfeMovie for, in order to work on another library: Awl. This library should allow me and others to work with parallel programming much more easily, and sfeMovie will be able to benefit from it. I've indeed been a little bit fed up of all the parallel programming issues I got with sfeMovie.
The repository : https://github.com/Yalir/Awl
A sample with SFML : http://pastebin.com/4SKHyAms
-
Well, good luck to you! Sounds great! ;-)
I'm wondering, is the paste bin example the definitive syntax (i.e. AwlAsyncBlock/AwlMainThreadBlock and AwlCloseAsyncBlock/AwlCloseMainThreadBlock pairs) or will you (perhaps) change it later ?
-
Well.. yeah, I suppose this is the definitive syntax, and I can't find anything better as these are macros and thus need to be written as one word. Would you think of some other syntax ?
Moreover since yesterday there has been some additions and one now has:
AwlAsyncBlock
AwlCloseAsyncBlock
AwlCloseAsyncControlledBlock(taskRef) (gives back a Task object to allow cancelling/killing/waiting)
AwlAsyncCall(function)
AwlAsyncMethod(method, object)
AwlMainThreadBlock
AwlCloseAsyncMainThreadBlock (execute on main thread but don't wait for completion)
AwlCloseMainThreadBlock (execute on main thread and ensure completion before continuing)
AwlMainThreadCall(function)
AwlMainThreadMethod(method, object)
Hopefully I don't think there will be other macros like these, it seems enough to fit any situation.
-
Your syntax is not bad - you define a small DSL, that's it. However, if you want to keep the "C-like" syntax maybe the following could be a solution. I don't know exactly if it fits very well, though.
#define AwlAsyncBlock(functionBlock) \
{ \
struct __awl_local_struct \
{ \
static void __awl_async_block(void) \
{ \
functionBlock \
} \
}; \
awl::AsyncCall(boost::bind(__awl_local_struct::__awl_async_block)); \
}
:
:
AwlAsyncBlock
(
tex1.LoadFromFile("big_image1.png");
:
:
)
So instead of using accolades you can use parenthesis.
-
And no more closing macro needed. I like it. Actually what I would have really loved would be writing the same with { } and no closing macro, for two reasons: to explicitly keep the idea of block, and to ease indentation.
As for the latest point, with { } the block is correctly indented, whereas with ( ) it's indented by one space and the closing parenthesis is not aligned to the opening one. These are details but annoying details for everyday's programming.
But.. I could successfully try the following syntax:
AwlAsyncBlock
({
// some code
})
Which is more interesting than with the close macro. Thanks!
-
I'm not sure that you can have a ';' inside a macro argument, it would mess up the code parser.
And I strongly encourage you to open a new topic about Awl instead of "polluting" the sfeMovie thread ;)
-
I'm not sure that you can have a ';' inside a macro argument, it would mess up the code parser.
Well, I just tested on gcc 4.2 and apple llvm compiler and both compiled the code fine. So apparently it works with these two at least.
-
Created new topic for Awl there : http://www.sfml-dev.org/forum/viewtopic.php?p=38679#38679
-
I am thinking of adding video to a current project I'm working on.
I downloaded the windows binary version, to test it. In my example I used big buck bunny OGG Theora Video, Vorbis stereo sound version.
It is the example code you provided on the wiki.
What I get back in console output is
[avi @ 00932850]max_analyze_duration reached
Movie_video::Initialize() - could not find any video decoder for this video form
at
Movie_audio::Initialize() - could not find any audio decoder for this audio form
at
[/code]
I then removed movie.ResizeToFrame(0, 0, 640, 480); for some reason
then i swear i heard sound for a second then the app crashed. every time after this the app crashed even when i changed it back and compiled.
now i get this in console whenever it crashes
[theora @ 00983aa0]7 bits left in packet 82
Last message repeated 1 times
[theora @ 00983aa0]Warning, unsupported keyframe coding type?!
Last message repeated 1 times
[theora @ 00983aa0]Header packet passed to frame decoder, skipping
Movie_video::DecodeFrontFrame() - an error occured while decoding the video fram
e
I will try compile the library from scratch when I get some time and see if I have some better luck. Though if anyone has any insight that would be very helpful.
-
1. Make sure the video format is really Theora and the audio format is really Vorbis.
2. You can indeed try to build it but if the point is an unsupported video/audio codec, building with the same configuration (ie. enabling only flac, theora and ogg) should produce the same results. You can give it a try with more decoders though.
3. It would be nice if I could get a piece of your video to test it.
4. If you only need Theora and Vorbis support you can have a look at SFMLTheora (http://www.sfml-dev.org/forum/viewtopic.php?t=4448).
-
1. Make sure the video format is really Theora and the audio format is really Vorbis.
2. You can indeed try to build it but if the point is an unsupported video/audio codec, building with the same configuration (ie. enabling only flac, theora and ogg) should produce the same results. You can give it a try with more decoders though.
3. It would be nice if I could get a piece of your video to test it.
4. If you only need Theora and Vorbis support you can have a look at SFMLTheora (http://www.sfml-dev.org/forum/viewtopic.php?t=4448).
The video is freely available from http://www.bigbuckbunny.org/index.php/download/
I downloaded the lowest resolution OGG format.
I checked in vlc it's codec details and it is theora and vorbis(as the site says).
I will check out SFMLTheora and see if it is a replacement. One feature i want is to get the current frame and set it to an opengl texture.
Thank you for your fast reply.
-
Ok. I tested your video file and indeed it won't display properly (although I've no crash and I have the soundtrack playing fine). I rebuilt sfeMovie with all of the codecs and I didn't get any better results, so I suppose this is just because of FFmpeg (used by sfeMovie). Maybe it's been fixed since I posted that beta but I can't tell you now.
I'll give it a try with the latest FFmpeg sources and tell you what's up.
PS: as for the feature you were wishing, note that even if sfeMovie gives access to the current image, it doesn't guarantee that you'll get every images. If your code is too slow, you may not be able to get some images, and if your code is too fast, you'll get some images several times.
-
With the latest FFmpeg source I get the same "no decoder found" message as you, and I can't work on it now, thus I think you've no other choice than using SFMLTheora.
-
With the latest FFmpeg source I get the same "no decoder found" message as you, and I can't work on it now, thus I think you've no other choice than using SFMLTheora.
Thanks a lot for your help. I don't actually need to play big buck bunny specifically. I just wanted an example to try. Though I do expect other people to make videos in one of my projects. I could say they have to use a particular format theora and vorbis to avoid licensing. Though it might be an issue if it has trouble with decoding legitimate movies.
The behavior about getting an image twice when fast and skipping when slow is exactly what I want. To ensure the person see's the movie at the speed it should display. The idea(in one project) is to be able to have a tv in an opengl 3d world.
Edit:
Also. I removed some code in my loop where i tried to use the image and it no longer crashes and I hear the music playing in the background.
Though i converted a different video using
http://v2v.cc/~j/ffmpeg2theora/download.html
and the console output is still.
Movie_video::DecodeFrontFrame() - an error occured while decoding the video fram
e
-
The first video frame is never decoded, whichever video you choose. I don't exactly know why, maybe it's not an error and it just means the video header has been decoded. I print this message in sfeMovie every time the decoding function returns an error, but I can't know more about what this error means. You shouldn't worry about it, except if it's repeated.
Now as for the Theora codec, I think the issue is specific to some profiles* or codec version, because I could play some other OGV files without trouble. But I don't know which profile/version is ok. Maybe SFMLTheora is working fine concerning that point.
*see Wikipedia (http://en.wikipedia.org/wiki/H.264/MPEG-4_AVC#Profiles) for example
-
Greetings,
I`ve managed to compiled your player on Windows 7 with Visual studio 2010 but the movie playback at 1920x1080 is chunky and makes HD movies unwatchable. I tried the same movie with the VLC player to make sure it wasn’t my system and it works fine.
Any thought on what might be killing the performance on widows?
-
Hello golgoth,
First of all I must say I am REALLY interested in knowing how you got it working with Visual Studio.
Secondly, there isn't much you can do except playing lower resolution movies. The highest resolution I could play with an Intel Core 2 Duo 2.4 GHz was 2048x872 on Mac OS X, and the results were not as good on Windows. 2048x872 is already around 1.8M pixels/image, your video is around 2.1M pixels/image which is just... too much for sfeMovie. Besides, when sf::Texture appeared in SFML, there has been threading issues that forced the use of additional computing and the performances got worse. I do not know how VLC gets such good performances yet, this is one of the things I've to work on for sfeMovie.
I'm wondering exactly which version of the library you're using, but you should try resolutions like 1280x720. Depends on your hardware (and software but I don't think you want to bother with fixing and improving the lib yourself).
-
First of all I must say I am REALLY interested in knowing how you got it working with Visual Studio.
That makes two of us. Please tell, and share! I use VS2005 and I cannot get it to work, and I really need to soon!
Ed
-
Hello there,
I`ll be glad to share as most people here especially Laurent and Ceylo have been a great inspiration to me!
Here is what I did, kind of sketchy but you’ll get the idea.
• I got the Yalir-sfeMovie-1c7b4c4 source files from sfeMovie site.
• Removed anything related to ffmpeg you provided and replaced them by those binaries: http://ffmpeg.zeranoe.com/builds/
• Close Visual Studio 2010
• I used cmake-gui to create the project
• Open your solution and drag and drop all related libs directly in sfe-movie project (sfml and ffmpeg libs)
• In the solution property, change your output dir to some location and copy the dlls over there (sfml and ffmpeg dlls)
• You might have to add new lib and include folders to your project properties
• Build your sfeMovie solution
• Replace missing defines by AVMEDIA_TYPE_VIDEO and AVMEDIA_TYPE_AUDIO
• Build again
• Create an empty win32 project inside your solution, add the sfeMovie lib, main.cpp and movie.h to your new project
• Select your new project as the default project in the solution property and set sfeMovie as dependency, make sure you have a valid path for your movie (main.cpp), build and voila
That how I did it in a nutshell.
Now, I’ve been on this for a while and can’t handle HD movies so far, I was curious if Ceylo did managed to beat me to it so I inverse engineered is stuff… all in vain. :) NOTE: I use OpenGL with PBO to render and I still have horrible latency. With that in mind, there is a bottleneck that is very hard to grasp.
Few thoughts,
• Sws_scale might be too heavy on the CPU, I’m considering converting YUV to BGRA in a GLSL shader but still not sure how yet.
• I’m currently decoding only one frame at the time. Adding a dedicated thread for decoding and storing few frames might improve speed.
• Eliminate copying the decoded data to the CPU and/or the GPU. Means the decode data would be pass to GLSL and mapped directly to SubTex2D, that’s a long shot but not impossible.
I’ve looked at VLC source and it’s like Chinese to me, hopefully you’ll have a better understanding.
I’ll be very interested I your findings also. You might consider opening a new thread.
Hope it helps. -Golgoth
-
Thank you very very much for your feedback golgoth, I'll have a look at Visual Studio as soon as possible :D .
As for your thoughts, I've been studying the bottlenecks too, and I can tell you it's not because of the conversion from YUV to RGBA. This conversion takes some time but is only a very small part of the CPU use. Besides.. I don't know whether you also use FFmpeg for the video decoding but from what I know there is no warranty for the output format to be YUV422, thus you'd need to consider each output format.
You can see some more detailed results I got long time ago here : http://www.sfml-dev.org/forum/viewtopic.php?p=22888#22888
As for the one frame at a time, you can draw, upload a texture and decode a frame in a parallelized way, but you cannot decode several frames at the same time, because each image depends on the previous one. Without the previous image, the current one can't be decoded except if it's a key frame.
As for eliminating the copying of the data... FFmpeg outputs the decoded data to a buffer in the RAM, not VRAM. And I don't know whether it is possible to give a buffer to the VRAM to FFmpeg.
As for the VLC sources I've never thought of looking at them, but I suspect they use hardware decoding through the OS API.
-
Hello again,
I made a performance profiling when playing HD movies with my ffmpeg player and 75% of my process is dedicated to SFML Window::Display(); OpenGL SwapBuffers() that is!
I`m stunt and yet, not surprised. Anyone have ideas why the OpenGL context is stalling and what solutions are there to optimize this call?
NOTE: I tried different combinations but so far, the best result comes with Window::SetFramerateLimit to the movie`s frame rate and Window::EnableVerticalSync to false.
Any constructive inputs would be look at closely.
-
Anyone have ideas why the OpenGL context is stalling and what solutions are there to optimize this call?
OpenGL commands are queued by the driver, and executed in SwapBuffers (or glFlush/glFinish if you call them). So it will always be these functions that consume most of the CPU.
If you call SetFramerateLimit or EnableVerticalSync, the wait also happens in Window::Display(), so this might be another explanation.
I don't know whath happens exactly in this particular situation. The rendering code is very specific, it's hard to tell. Deeper tests are definitely necessary in order to identify the "problem" precisely.
-
Golgoth, is there any chance you can ZIP up your VS2010 project which built the libraries and share with us?
Thanks
-
:shock: I got it running within Visual Studio 2010.
With crashes, as expected, but at least now I can start debugging :D .
I got one weird point though : even if I linked against FFmpeg static libs, it was still requesting the FFmpeg dlls. But it's not really important compared to getting it running :) .
Thank you very very much golgoth, I love ya!
-
Ceylo
If you need some testing doing on the VS2010 version, let me know!!
Ed
-
Okay. I think I've got something ready for Visual Studio :) Dynamically linked, release only, and with "a few" dlls, but it's working fine. Don't expect anything great as for performances, but at least you'll be able to work with both sfeMovie and Visual Studio.
Download the first zip and get the FFmpeg dlls from the second link (I'm not providing the FFmpeg dlls for legal reasons).
sfeMovie and SFML files: https://github.com/downloads/Yalir/sfeMovie/MSVC_files.zip
FFmpeg files: http://ffmpeg.zeranoe.com/builds/win32/shared/ffmpeg-git-6bca574-win32-shared.7z
As for the Git repository, what you can get from there is still not usable for Visual Studio. I've some cleaning to do.
-
Some news about the project!
• I finally did the texture upload in the drawing thread => no more useless glFlush() => better performances
• I updated FFmpeg to v0.10 => multithreaded decoding => again better performances (= 2048x872 playback without getting late even when running in a virtual machine) AND more video formats supported (actually I can read any video I've on my computer)
Everything is currently stable and fully working for :
• GCC on Mac OS X (64 bits)
• MinGW and Visual Studio on Windows
For now I'm especially waiting for SFML 2.0 release in order to fix names and use the latest classes (I still don't use sf::Time).
So... well.. now let's just wait for Laurent!
-
Great news! I'm glad you finally managed to fix all the bugs and get very good performances :)
-
1. Make sure the video format is really Theora and the audio format is really Vorbis.
2. You can indeed try to build it but if the point is an unsupported video/audio codec, building with the same configuration (ie. enabling only flac, theora and ogg) should produce the same results. You can give it a try with more decoders though.
3. It would be nice if I could get a piece of your video to test it.
4. If you only need Theora and Vorbis support you can have a look at SFMLTheora (http://www.sfml-dev.org/forum/viewtopic.php?t=4448).
The video is freely available from http://www.bigbuckbunny.org/index.php/download/
I downloaded the lowest resolution OGG format.
I checked in vlc it's codec details and it is theora and vorbis(as the site says).
I will check out SFMLTheora and see if it is a replacement. One feature i want is to get the current frame and set it to an opengl texture.
Thank you for your fast reply.
I tested the video again and it's playing fine now.
-
I did the naming convention change and I now use sf::Time. So sfeMovie is now usable with SFML 2.0.
Currently I'm trying to find out how to make sure it'll run on Windows XP too. On Mac OS X there are SDK to build your application against some older OS version, but I don't know if there is something similar on Windows.
Does one of you know about it ?
-
There's nothing to do, it should work.
-
sfeMovie 1.0 RC1 available :) => see wiki (https://github.com/SFML/SFML/wiki/ProjectSfeMovie)
Everything you need to know should be in the wiki. I'm waiting for your questions or comments! If everything goes well, sfeMovie 1.0 will be released when SFML 2.0 is released.
For those who want to see a demo (Windows) : sfeMovie Demo.zip (http://lucas.soltic.perso.luminy.univmed.fr/downloads/sfeMovie%20Demo.zip)
-
Not much feedback except one person on the French forum !
Has something annoyed or stopped you ? or some other reason ?
When the final v1.0 is released, I'll make a new topic in the right section : SFML projects.
-
I've just noticed there was an issue with the RC1 sources download (the link was fine but nobody could download the file). It's fixed.
-
Hey, this project still looks very interesting. At the moment, it's just a little bit difficult for me to fully exploit it, because I'm currently occupied with Thor and another project, but nevertheless I hope to spend some time on it soon. Do you know if sfeMovie works well for Visual Studio?
-
Hello Nexus,
Yes it is working well with Visual Studio, except for one point : I noticed than when launching the exe within the EDI, it crashes at exit (after main() is over), whereas it doesn't when launched from the Explorer. I had hoped to get some feedback about it, to see whether I'm the only one concerned or not (or because of some specific hardware for example).
This is something I want to fix before the 1.0 release, in case I find out it depends on my work. The reason is still unknown.
As for the performances, they are as good as with MinGW.
-
This project is fantastic! Thanks Ceylo!
Have you considered adapt it for other video sources? Camera adquisition? Stream video? images-generated-on-the-fly?... it would be fantastic!
I made a very very simple (and very very useful) class (I named CDisplay) for showing *video* with SDL a varios years ago. The *input* was unsigned char * uncompressed RGB frames (bitmap images). LOL! Nothing professional of course (my skills are low) but it worked like a charm for my purposes.
More details: I worked with a SAPERA SDK from Teledyne Dalsa and a photonfocus Camera. The adquisition speed was 200 frames per second. The display render speed was unknown (:D)
DJuego
Sorry for my shocking English.
-
Thanks for your comment :)
No I haven't considered these features yet. I prefer to focus on simple and basic features for now, and make sure everything is reliable. Especially as far as Visual Studio is concerned (see previous posts).
Once everything is ok, there are a few other features I would like to focus on, before extending sfeMovie to a wider area : seeking and subtitles. And once this is done, maybe playing video from other sources like RTSP streams or custom input streams. Remember that sfeMovie is still a video player, not a video recorder or generator.
May I ask which resolution you were using for your frames ?
Ceylo
-
Once everything is ok, there are a few other features I would like to focus on, before extending sfeMovie to a wider area : seeking and subtitles. And once this is done, maybe playing video from other sources like RTSP streams or custom input streams. Remember that sfeMovie is still a video player, not a video recorder or generator.
A cold and organized mind. I like it!
May I ask which resolution you were using for your frames ?
Yep! 640 x 480. Obviously, the parameter was configurable.
Originally, in operation mode, the 'display' had to be turn off or the system missed frames. The threading improved it but not enough >:(. At last the display only could be used in calibration mode :-[.
In any case the images was very bored. You can believe me. A damned cross-platform industrial OCR. ::) It was built with Visual Studio and GNU gcc (Mingw port & Ubuntu).
DJuego
-
Yep! 640 x 480. Obviously, the parameter was configurable.
Originally, in operation mode, the 'display' had to be turn off or the system missed frames. The threading improved it but not enough >:(. At last the display only could be used in calibration mode :-[.
In any case the images was very bored. You can believe me. A damned cross-platform industrial OCR. ::) It was built with Visual Studio and GNU gcc (Mingw port & Ubuntu).
DJuego
Does it mean the rendering process was consuming too much time ?
-
Does it mean the rendering process was consuming too much time ?
Not too much time. Simply, our requirements were unreasonable at that time and at that place.
In any case 200 frames per second, 5ms per frame... Although it could make it we wouldn't *see* it (refresh monitor limits). Nowdays 3D monitor refreshes the screen to 120hz or so. AND... too fast for the human visual pathway ::)
Our solution for rendering (more or less) was:
First. A thread for rendering.
Second. When a new frame was adquired from camera (SAPERA calls to our callback function)...
We test if the render process was busy(with an old frame).
- if yes, the new frame was not rendered (discard rendering).
- if no, the new frame is rendered (concurrently).
***
Here, the character recognition process (in very broad outlines) <- Industrial secret ;D...¡nah!
***
The callback function returns. The system is ready for new frames.
DJuego
Sorry for my English! :(
P.S: SAPERA is the adquisition card driver
-
Uh ok I understand better. 200 frames/second, that's quite a lot to process for the OCR system. And of course too much for displays, but not important as human can't see it, as you said.
Sounds quite efficient even if you said it wasn't professional.
As for the industrial secret, if I didn't miss the point : there are 'not that bad' free and open source OCR systems now, such as Tesseract (http://code.google.com/p/tesseract-ocr/).
Ceylo
-
The crash at exit when running within Visual Studio has been identified.
It's similar to https://github.com/SFML/SFML/issues/30 (although not the exact same one) and can be fixed by using the latest OpenAL DLL from http://kcat.strangesoft.net/openal.html.
Thus there is no more known bug for Visual Studio where sfeMovie is responsible.
-
Alright, your project looks really good and it would be perfect for showing an intro. However, the function movie.openFromFile(...) never seems to work, I've tried with all sorts of formats now (.avi and flv for example) and it just never loads...
I also don't get any errors or debug information... Any idea what the problem is? Do I need to doo something with ffmpeg first or is it enough to link against the sfe-movie.lib and add the .dlls to the project?
Best regards
*EDIT*
Tried an ogg file and that loads perfectly (only audio)
*EDIT2*
Video ogg works aswell, everything else fails :(
-
Hello snoozer87 !
Thanks for your interest :)
As you have found out, the provided sfeMovie binaries only include some decoders : ogg vorbis, ogg theora and flac.
This is because I cannot provide decoders for other formats without paying royalties. Thus if you want support for avi or flv files (note that avi and flv are just containers, not codecs), you'll have to build sfeMovie yourself and enable some or all of the decoders. To do so you can follow the explanations on the wiki (https://github.com/SFML/SFML/wiki/ProjectsfeMovie).
Or if you want to keep things simple, use one of the free codecs*.
Ceylo
* since sfeMovie 1.0 rc has been released, I've found out a few more free codecs : VP8 on any OS, and WMV/WMA on Windows. These will be included in the final v1.0.
-
Thanks a lot for the info, I just thought about rebuilding myself, so my apologies for the rather stupid question :p.
-
Don't worry, you're not the first one to ask :P
I should make this info more visible.
Ceylo
-
I'm sorry to bother you again, but I just rebuild the whole project and I selected to build all the codecs (to be sure). Sadly enough, the problem persists and I cannot load avi or flv files :(.
I'm aware that avi and flv are containers, so maybe the underling codec is not supported :).
-
Did you replace the FFmpeg dlls (avcodec & such) with the one you just built ?
They are in sfeMovie/deps/ffmpeg-build.
NB : one more info I should make more visible :D
-
Wiki updated.
-
Hello,
I'm currently working on movie seeking. It's already working quite well, but I have a question for you.
Movies are in general composed of key frames (containing a full image) and progressive images (containing only the changes from the previous frames). The interval between two key frames can be of a few seconds. Also note that when seeking to a non key (ie. progressive) frame, you'll see artifacts as the image is incomplete.
Thus I would like to know, among the following possibilities, which one you prefer :
- use key images : produces perfect images but the reached position may not be the exact one you wanted, instant seeking
- use any image : may produce incomplete images until a key frame is reached but the reached position is the one you wanted, instant seeking
- use a more complex algorithm that seek to the closest previous key frame and then load the next frames as fast as possible until the wanted position is reached. This produces perfect images and the reached position is the one you wanted, but it takes some time (usually less than one second, but it's quite noticeable)
- let the user choose which method to use among the previous ones
So what's your thought about it?
Ceylo
-
I'd prefer exact images, because one might also use the seeking feature for previews/screenshots or the like. And I'd start with the expensive algorithm, while you can still add a default parameter in the future.
-
I'd prefer exact images, because one might also use the seeking feature for previews/screenshots or the like. And I'd start with the expensive algorithm, while you can still add a default parameter in the future.
Ok I understand. It's noted.
Laurent has answered on the French forum too. And he said the user should be able to choose between any of these three methods. But I'm actually trying to figure out in which cases each method would be useful.
- approximative perfect images : the use case you said but on slow computers
- incomplete images : I saw it was used in the Kdenlive video editor. But I don't really know why they didn't use the 3rd method. In order to do faster and less CPU expensive seeking? But I don't expect people to do video editing on slow computers so...
- expensive method : in common movie players and your use case
If someone had needs for the instant seeking with incomplete images, it'd be great to tell his/her use case and reasons here :) .
-
You can also use the approach where you only implement what you personally find relevant, and then wait for users feedback to decide whether you must implement other methods or not.
-
You can also use the approach where you only implement what you personally find relevant, and then wait for users feedback to decide whether you must implement other methods or not.
Ok. I think I'll rather do this, and just do the expensive algorithm for now, as Nexus said. This is also the one that seems the most relevant to me.
Thanks for your feedback!
-
Very cool library man!
I'll use this for my cutscenes :D
-
Hello N1ghtly!
I'm really pleased to know it'll be useful to you :D
-
dose this have the abilities to use masks, either as a black and white video that plays at the same time acting as a mask or a embed channel of some kind. I know quicklime can embed a alpha channel.. I am sure there are other formates as well that can.
I'm using SFML to make a small 2D project and was wondering what options there are for playing videos at exact pixel coordinates. So say your game window is 1280x720 and you have a few videos one is say 100x100 pixels to make your still image background look like the fountain is running... stuff like that.
All (heh I say this like it would be nothing) would be to be able to loop seamlessly and just play from an exact pixel location.. either have an alpha channel or just overlay ontop of it a 2d bitmap masking out the parts you do not want.. that might be easier as you wouldn't need a video alpha but could get near the same results in most cases (unless you wanted something to move behind teh video.. scene design could make this not needed i guess.
-
Hello aNewHobby,
If I understood correctly, you want to display a looping animation that has an alpha channel, but no audio? As for exact pixel coordinates, I think any player is ok, this shouldn't be a problem.
As far as sfeMovie is concerned, there are several supported formats that can handle alpha channel (including qtrle, gif and maybe svq3 but I can't find back the information for this latest format) but looping isn't available for now. Plus you made me notice bug that will prevent you from playing short animations.
Thus, sfeMovie is currently not ready for what you want to do.
But for what you want, I think you can find simpler solutions :
- adapt a GIF player
- make or use an existing animation player : basically, they load several image files and display them sequentially, or load one sprite sheet and display a different subrect of the image for each frame. You can find sample codes or even projects about this available on the SFML forum.
Ceylo
-
If I understood correctly, you want to display a looping animation that has an alpha channel, but no audio? As for exact pixel coordinates, I think any player is ok, this shouldn't be a problem.
well, alpha is not strictly needed as I said, but yes... video .. . or at least a sequence of sprites that play like a video with no sound is what I am looking for.
But for what you want, I think you can find simpler solutions :
- adapt a GIF player
- make or use an existing animation player : basically, they load several image files and display them sequentially, or load one sprite sheet and display a different subrect of the image for each frame. You can find sample codes or even projects about this available on the SFML forum.
thank you I will look into these .. much appreciated.. I'll find a way to use your thing though.. maybe a logo tumble at the start on application load or something :)
-
thank you I will look into these .. much appreciated.. I'll find a way to use your thing though.. maybe a logo tumble at the start on application load or something :)
Glad I could help you, but please don't consider you *have* to use sfeMovie just to use it :D
-
Ceylo
Can I static link sfeMovie....? I seem to remember a long time ago it was not possible...
Thanks
-
Hello slotdev!
I still haven't allowed static linking against sfeMovie because it's under LGPL, so that you don't have to care about all of the dependencies, and because static linking with FFmpeg and Visual Studio does not work. Why do you need to statically link against sfeMovie ? for which IDE on which OS ?
Ceylo
-
As far as sfeMovie is concerned, there are several supported formats that can handle alpha channel (including qtrle, gif and maybe svq3 but I can't find back the information for this latest format) but looping isn't available for now. Plus you made me notice bug that will prevent you from playing short animations.
A little note about the GIF format: I found out FFmpeg cannot load animated GIF, it'll just load the first image.
-
Hello slotdev!
I still haven't allowed static linking against sfeMovie because it's under LGPL, so that you don't have to care about all of the dependencies, and because static linking with FFmpeg and Visual Studio does not work. Why do you need to statically link against sfeMovie ? for which IDE on which OS ?
Ceylo
I have to static link all our code because we cannot change/update MSVC runtime libraries. We have fixed hardware platforms which are out of our control.
-
Hmmm.. FFmpeg libraries cannot be statically linked into your program with Visual Studio.
But FFmpeg is a C library always built with MinGW, where Visual Studio is used to produce the .lib files only. Thus I don't think the FFmpeg dlls depend on any MSVC runtime version. Therefore, what could be done is produce a static version of sfeMovie and provide FFmpeg as dlls. Would that fit your needs?
-
- make or use an existing animation player : basically, they load several image files and display them sequentially, or load one sprite sheet and display a different subrect of the image for each frame. You can find sample codes or even projects about this available on the SFML forum.
Did some tests with Thor2 and the animation class it has.. and this seams to work fine for my needs. Though there could be some frame rate problems.. I'll put some work into it.. thanks for the tips.
I was wondering, am I correct in thinking your player thing only works in windows and mac and not in linux?
-
I was wondering, am I correct in thinking your player thing only works in windows and mac and not in linux?
As far as Linux is concerned, sfeMovie works on my Debian VM and works for a Gentoo user too. But danman reported crashes so for now I'm trying to figure out what's wrong. Thus it should be ready for Linux soon but there are some fixes required first.
You could give it a try and tell me whether it works fine for you though :) . (with the latest sources from the git repository)
-
Hello everyone!
As you may know, current sfeMovie's status on Linux is undefined. The main reason is that some Linux users told me it's working fine, whereas others told me it's not. Thus I would like to know, once for all, what's wrong with sfeMovie on Linux.
That's why I'm now inviting Linux users to test the following sfeMovie package (Intel) : sfeMovie-linux-32b-1.0-rc1.tar.gz (https://github.com/downloads/Yalir/sfeMovie/sfeMovie-linux-32b-1.0-rc1.tar.gz) (5.1 MB). It uses SFML 2.0 RC.
As for the source code of the testing program, you can use the provided sample code : main.cpp (https://github.com/Yalir/sfeMovie/blob/master/sample/main.cpp).
You should also know that, for now, I don't know much about distributing packages for Linux, so if anything is lacking or there are more interesting ways to provide packages than the way I did, don't hesitate to tell it :) . The binary files I gave include the FLAC, Vorbis, Theora and VP8 decoders (and no other one !). Thus, I'm especially expecting users to test OGG/OGV/WebM movies.
I'm also asking to the testers, to tell me whether it works AND what is your OS, processor and graphics card. That way I can check whether it works for a particular family of hardware.
Thanks :)
Ceylo
-
No Linux user interested in testing the library ?
-
Hello Ceylo ...
I'm Having a problem in running sfe-movie :(
i made everything .. every step ..
and it successfully running in Release Mode
but .. while running in Debug Mode .. it displays this error !
Unhandled exception at 0x7548b9bc in Project.exe: Microsoft C++ exception: std::bad_alloc at memory location 0x0039ef84..
when i press Continue .. this appears :
Project.exe has triggered a breakpoint
when i press Continue again .. this appears :
Unhandled exception at 0x6b1f20c4 in Project.exe: 0xC0000005: Access violation writing location 0x694bc7ec.
any help on this problem .. ?
-
Hello shadowguns,
Could you tell me a bit more about what you did? Which version of sfeMovie are you using? Is it a prebuilt version or did you build it yourself?
Does the issue happen with one specific video file or any video? Could you write a minimal sample code that reproduces the issue?
I don't know much about how debug/release binaries are handled by Visual Studio but it might also be the reason of the crash. If this is the true reason, you'll have to stay with release mode for now as I provided no way to build debug binaries.
Ceylo
-
Hello Ceylo ..
i've downloaded the compiled version .. Windows (Visual C++ 2010)
i'm using SFML 2.0
on Windows 7
and this is my code ...
int main()
{
sf::RenderWindow window(sf::VideoMode(640, 480), "sfeMovie Player");
sfe::Movie movie;
// Open movie file for reading
if (!movie.openFromFile("video.ogg"))
return 1;
// Scale the movie drawable to fit the window and start the playback
movie.resizeToFrame(0, 0, 640, 480);
movie.play();
while (window.isOpen())
{
sf::Event ev;
while (window.pollEvent(ev))
{
if (ev.type == sf::Event::Closed)
window.close();
}
window.clear();
// Render the movie, the images and sound are updated in the background
window.draw(movie);
window.display();
}
return 0;
}
----------------------------------------------------------------------------------------------------------------------
when running in debug mode .. and start without debugging (Ctrl + F5)
it says the following error :
Debug Error !
R6010
- abort() has been called
(Press retry to debug the application)
-
Ok, so you're trying to play an Ogg video with sfeMovie 1.0rc under Visual Studio 2010 in debug mode.
I'll have a look at it next weekend, but not before. I'm too busy right now. For now stay in release mode if you can.
Ceylo
-
ok Thanks a lot Ceylo :)
but .. opps !
the next weekend !? :( :(
i'll go for an exam with my project next Saturday :(
so .. i need to complete my whole project with the video before Saturday morning !
so.. if you could please look at that problem & done it on Friday ??
Thanks again :D
-
Yes I can have a look at it friday afternoon too, but remember that it doesn't mean I'll immediately find out what's wrong. Thus you have no guarantee. For your exam you have to do a demo in debug mode ? (I'm actually busy with exams too these days :P )
-
Thanks Ceylo :D
i know of course :P
but .. please work hardly on it as you can :)
it is important for me please :)
thanks again ^^
-
*currently looking at what's wrong with debug mode*
For now I successfully reproduced the crash in debug mode (and it's working fine in release mode).
Edit: a debug build of sfeMovie made it work for me. Tell me if it's ok : https://legacy.sfmluploads.org/file/137 (34KB). I used both this debug build and the debug version of SFML in debug mode.
-
Thanks a lot Ceylo :D
it is now WORKS Perfectly :) :)
Thanks Again :)
----------------------------------------------------------------
there is a new problem here :(
movie.close();
"sfe::Movie::close" (declared at line 241 of "C:\sfml2\include\SFML\Movie.h") is inaccessible
it can't see the close() method ! .. i don't know why ! :( :(
although .. Movie.h is accessible and exists in that folder !
can you help me in this please ??
-
Thanks a lot Ceylo :D
it is now WORKS Perfectly :) :)
Thanks Again :)
Good to know! :)
there is a new problem here :(
movie.close();
"sfe::Movie::close" (declared at line 241 of "C:\sfml2\include\SFML\Movie.h") is inaccessible
it can't see the close() method ! .. i don't know why ! :( :(
although .. Movie.h is accessible and exists in that folder !
can you help me in this please ??
sfe::Movie::close() is private. Why do you want to use it?
-
i want to use a cut scene in my game project !
so .. i want to play it when i run the project .. while the game is not running !
then i want to close that video after it done .. and then run the game !
how can i do that ??
-
If you want to let the movie play until it's finished, use sfe::Movie::getStatus() every frame and start your game once it returns sfe::Movie::Stopped. If you want to stop it before the end, just call sfe::Movie::stop().
And note that the movie will still be displayed (even if not playing) until you stop calling window.draw(movie) every frame. Thus you should not call this when you want to play the game.
-
Hello everyone!
As you may know, current sfeMovie's status on Linux is undefined. The main reason is that some Linux users told me it's working fine, whereas others told me it's not. Thus I would like to know, once for all, what's wrong with sfeMovie on Linux.
That's why I'm now inviting Linux users to test the following sfeMovie package (Intel) : sfeMovie-linux-32b-1.0-rc1.tar.gz (https://github.com/downloads/Yalir/sfeMovie/sfeMovie-linux-32b-1.0-rc1.tar.gz) (5.1 MB). It uses SFML 2.0 RC.
As for the source code of the testing program, you can use the provided sample code : main.cpp (https://github.com/Yalir/sfeMovie/blob/master/sample/main.cpp).
You should also know that, for now, I don't know much about distributing packages for Linux, so if anything is lacking or there are more interesting ways to provide packages than the way I did, don't hesitate to tell it :) . The binary files I gave include the FLAC, Vorbis, Theora and VP8 decoders (and no other one !). Thus, I'm especially expecting users to test OGG/OGV/WebM movies.
I'm also asking to the testers, to tell me whether it works AND what is your OS, processor and graphics card. That way I can check whether it works for a particular family of hardware.
Thanks :)
Ceylo
No feedback about this ?
-
Hello Ceylo
I managed to compile the library and run the sample program (from the git sources) using clang 3.1.
However, I found this issues:
* CMake was trying to link a static version of ffmpeg, which (at least for me) resulted in unresolved symbols even with the -fPIC flag, linking against a shared version solved the problem.
* The audio did not play in sync (it started after the video) in the movie I used with the sample program. The same video plays fine with mplayer and ffplay.
There may be other issues, but this is what I have found.
For additional information, this is my software/hardware stack:
OS: Arch Linux x86_64 (using kernel 3.4.x)
Processor: AMD Athlon X2 Dual-Core QL-64
Graphic Card: ATI Mobility Radeon HD 3200
-
Hello Rogof!
Thanks for your feedback :) .
* CMake was trying to link a static version of ffmpeg, which (at least for me) resulted in unresolved symbols even with the -fPIC flag, linking against a shared version solved the problem.
I indeed noticed this recently thanks to the feedback of a French user. It was not happening for me because I was using a 32 bits Debian VM, and this issue appears on Linux 64 bits only. I've been able to statically link FFmpeg by adding the -fPIC flag, but also by disabling the assembler optimizations, which is not satisfying. Thus I ended up linking dynamically too. I think that's the solution I'll keep for Linux.
* The audio did not play in sync (it started after the video) in the movie I used with the sample program. The same video plays fine with mplayer and ffplay.
It may be this issue: https://github.com/Yalir/sfeMovie/issues/3 (although I didn't give much details about it).
But just in case: could you provide your testing video or at least a part of it ? by how much (approximatively) was it desynchronized ?
Thanks again!
Ceylo
-
But just in case: could you provide your testing video or at least a part of it ? by how much (approximatively) was it desynchronized ?
The audio starts about 3 seconds after it should. About the movie, I don't know if I can provide it because it's not mine. The movie is a demo movie I downloaded from here: (NSFW)http://www.game-style.jp/dl/201206/07/99hir_li.php (http://www.game-style.jp/dl/201206/07/99hir_li.php), the download link is the button bellow "デモムービー(104MB)".
The movie itself has a mpeg1 video stream and a mp2 audio stream. I converted the movie to ogv issuing this command:
ffmpeg -i hiragumo_demo_typeA.mpeg -c:v libtheora -c:a libvorbis -q:v 8 some_movie.ogv
The software used was:
ffmpeg v0.10.3
libtheora v1.1.1
libvorbis v1.3.3
When playing the ogv movie with the sample program, found the next issues:
When closing the window while the movie is playing, it displays:
pthread_cond_destroy() error
When toggling to full-screen (pressing f) while playing the movie, a segfault occurs
EDIT: I'm using the open source radeon driver which, when toggling to full-screen gives a bunch of:
radeon: The kernel rejected CS, see dmesg for more information.
with this backtrace:
#0 0x0000000000000000 in ?? ()
#1 0x00007ffff04545ca in ?? () from /usr/lib/xorg/modules/dri/r600_dri.so
#2 0x00007ffff041ad4d in ?? () from /usr/lib/xorg/modules/dri/r600_dri.so
#3 0x00007ffff041fec1 in ?? () from /usr/lib/xorg/modules/dri/r600_dri.so
#4 0x00007ffff042018c in ?? () from /usr/lib/xorg/modules/dri/r600_dri.so
#5 0x00007ffff0420bf9 in ?? () from /usr/lib/xorg/modules/dri/r600_dri.so
#6 0x00007ffff7f76478 in sf::Texture::~Texture() () from build-clang-release/lib/libsfml-graphics.so.2
#7 0x00007ffff7f41af3 in sfe::Movie_video::~Movie_video() () from build-clang-release/lib/libsfeMovie.so.1.0.0
#8 0x00007ffff7f3f1b3 in sfe::Movie::~Movie() () from build-clang-release/lib/libsfeMovie.so.1.0.0
#9 0x0000000000401db5 in main ()
And when I run dmesg there is a lot of:
[19815.432173] radeon 0000:01:05.0: texture bo too small ((800 600) (1 1) 0 26 0 -> 1920000 have 4096)
[19815.432184] radeon 0000:01:05.0: alignments 832 1 1 1
[19815.432190] [drm:radeon_cs_ib_chunk] *ERROR* Invalid command stream !
By the way, I've also successfully build the library with gcc 4.7, and got the same problems.
EDIT2: Sometimes the audio plays in sync with the video, don't know the reason though.
-
As for the radeon issue, isn't it the same issue as this ? https://bugs.freedesktop.org/show_bug.cgi?id=47039
As for the audio desynchronization, I still didn't test it. Till now I only fixed the Linux build so that sfeMovie is dynamically linked against FFmpeg. It's committed. But then I noticed I get a crash in sws_scale() on Debian 64 bits but not on Debian 32 bits (exact same build except it's 64 bits). The crash more exactly occurs in an assembler code. I could disable assembler optimizations to get it work but 64 bits Linux users would get a loss in performances. I'm still searching how I can fix this. Thus I couldn't even test fullscreen switching (it works fine for me with the 32 bits kernel).
-
As for the radeon issue, isn't it the same issue as this ? https://bugs.freedesktop.org/show_bug.cgi?id=47039
No, the bug is this: https://bugs.freedesktop.org/show_bug.cgi?id=49817 (https://bugs.freedesktop.org/show_bug.cgi?id=49817).
... I noticed I get a crash in sws_scale() on Debian 64 ...
Actually, I also got a segfault using the same movie but encoded with a different quality.
I think is the same error but just in case, here is the backtrace:
#0 0x00007ffff38f6656 in yuv420_bgr32_MMX (c=0x11b5a80, src=0x7fffffffd520, srcStride=0x7fffffffd500, srcSliceY=0, srcSliceH=600,
dst=0x7fffffffd540, dstStride=0x7fffffffd510) at libswscale/x86/yuv2rgb_template.c:417
#1 0x00007ffff38e2e20 in sws_scale (c=<optimized out>, srcSlice=<optimized out>, srcStride=0xe380e0, srcSliceY=0, srcSliceH=600,
dst=<optimized out>, dstStride=0xe382c0) at libswscale/swscale_unscaled.c:1030
#2 0x00007ffff731d5bf in sfe::Movie_video::decodeFrontFrame(bool) () from ../product/lib/libsfeMovie.so.1.0.0
#3 0x00007ffff731d7ac in sfe::Movie_video::loadNextImage(bool) () from ../product/lib/libsfeMovie.so.1.0.0
#4 0x00007ffff731d875 in sfe::Movie_video::preLoad() () from ../product/lib/libsfeMovie.so.1.0.0
#5 0x00007ffff731adbc in sfe::Movie::openFromFile(std::string const&) () from ../product/lib/libsfeMovie.so.1.0.0
#6 0x0000000000401616 in main ()
I could disable assembler optimizations to get it work but 64 bits Linux users would get a loss in performances.
If by "disable assembler optimizations" do you mean to build ffmpeg with the "--disable-asm" flag, then I also got a segfault with this backtrace:
#0 0x00007ffff3932b39 in yuv2rgb_c_32 (c=0xd9c630, src=<optimized out>, srcStride=0x7fffffffd500, srcSliceY=0, srcSliceH=600, dst=<optimized out>,
dstStride=0x7fffffffd510) at libswscale/yuv2rgb.c:217
#1 0x00007ffff392d840 in sws_scale (c=<optimized out>, srcSlice=<optimized out>, srcStride=0xc08c20, srcSliceY=0, srcSliceH=600,
dst=<optimized out>, dstStride=0xe373b0) at libswscale/swscale_unscaled.c:1030
#2 0x00007ffff731d5bf in sfe::Movie_video::decodeFrontFrame(bool) () from ../product/lib/libsfeMovie.so.1.0.0
#3 0x00007ffff731d7ac in sfe::Movie_video::loadNextImage(bool) () from ../product/lib/libsfeMovie.so.1.0.0
#4 0x00007ffff731d875 in sfe::Movie_video::preLoad() () from ../product/lib/libsfeMovie.so.1.0.0
#5 0x00007ffff731adbc in sfe::Movie::openFromFile(std::string const&) () from ../product/lib/libsfeMovie.so.1.0.0
#6 0x0000000000401616 in main ()
-
Hi
There was an sfeMove demo of Big Buck Bunny running on the Windows version (i.e. all compiled and ready to run) - where is that file located now? I just need to test it on some hardware to make sure it works!
Thanks
Ed
-
No, the bug is this: https://bugs.freedesktop.org/show_bug.cgi?id=49817 (https://bugs.freedesktop.org/show_bug.cgi?id=49817).
From what I understood, it's related to SFML, not to sfeMovie. Thus I guess I can't do much about it, or did I miss something?
Actually, I also got a segfault using the same movie but encoded with a different quality.
I think is the same error but just in case, here is the backtrace: [...]
Yes it's the same error.
If by "disable assembler optimizations" do you mean to build ffmpeg with the "--disable-asm" flag, then I also got a segfault with this backtrace: [...]
That's indeed what I mean, and you're right, it stills crashes :-\. I guess I'll have to search deeper for what's wrong there.
There was an sfeMove demo of Big Buck Bunny running on the Windows version (i.e. all compiled and ready to run) - where is that file located now? I just need to test it on some hardware to make sure it works!
Sure, here it is: http://tinyurl.com/sfeMovieDemo (166 MB)
-
From what I understood, it's related to SFML, not to sfeMovie. Thus I guess I can't do much about it, or did I miss something?
Yes, the problem is either something in SFML or in the radeon driver. I will try using the catalyst driver to see if the same thing happens, but my guess is that it only affects the open source driver.
EDIT: The catalyst driver does not have this issue.
I've compiled the ffplay that comes with the ffmpeg in the deps directory to see if the problem is swscale, but it plays (almost) without problems with it.
note: I compiled ffmpeg with the flags used by the build script + the --disable-avfilter flag since ffplay uses it instead of swscale if compiled.
-
EDIT: The catalyst driver does not have this issue.
Good to know :) .
I've compiled the ffplay that comes with the ffmpeg in the deps directory to see if the problem is swscale, but it plays (almost) without problems with it.
Yeah I don't expect sws_scale() to be buggy, I must have done something wrong earlier. I've already checked the parameters given to sws_scale() in 32 bits and 64 bits and they're the same (I suspected wrong computations due to the sizes of types), so it should be because of a mistake somewhere else.
-
Is there any option to use this in SFML 1.6?
-
Uh... I gave up on SFML 1.6 a... very long time ago. Even in the first (buggy) beta I was already using SFML 2.0. Thus no, sfeMovie isn't usable with SFML 1.6.
Edit: but thank you, thanks to you I found out very old projects I had written, and I'm kinda nostalgic now :D .
-
Yeah I don't expect sws_scale() to be buggy, I must have done something wrong earlier. I've already checked the parameters given to sws_scale() in 32 bits and 64 bits and they're the same (I suspected wrong computations due to the sizes of types), so it should be because of a mistake somewhere else.
The crash with sws_scale() has been fixed :) . I could successfully play movies with Linux 64 bits and OS X with GuardMalloc enabled (the later was actually reporting the same sws_scale() error).
Tell me if everything works fine for you! (use the latest sources from the Git repository)
-
Yes, the video plays without crashing, even those encoded with ffmpeg2theora. The only problem is that the audio still lags.
-
Yes, the video plays without crashing, even those encoded with ffmpeg2theora. The only problem is that the audio still lags.
You mean that audio is late ? Yeah I still didn't look at this issue yet. Everything in its own time :) .
-
As for audio, it's late only when I do a stop (S) or restart (R) command with the sample player. Is it the same for you or does it also occur when launching the program ?
-
When starting the sample program.
-
I couldn't get audio to be late at launch. Even if I've an idea to fix this if it's what I think of. Does it resync when you do pause/play (Space) ?
-
I couldn't get audio to be late at launch. Even if I've an idea to fix this if it's what I think of. Does it resync when you do pause/play (Space) ?
Yes, it does.
-
I did another push. Can you tell me whether audio is still desynchronized when launching the sample program ?
-
I did another push. Can you tell me whether audio is still desynchronized when launching the sample program ?
Unfortunately, it is.
-
I have found the problem (kind of). For some reason the audio is desynchronized when using the project's sfml build.
Using the version that comes whit archlinux, the audio plays synchronised.
-
Uh.. sfeMovie come with SFML 2.0 RC sources (as of April 15) and I didn't see any commit related to the audio package since that time.
Anyway (keep my libraries if it can help at spotting the issue), I've added debug messages that print when audio chunks and images are decoded (see latest push). Add sfe::Movie::useDebugMessages(true); at the beginning of the sample program before testing. If you see something like that :
[0.129s] Movie_video::DecodeFrontFrame() - frame not decoded (or incomplete)
[0.129s] Movie_video::DecodeFrontFrame() - frame not decoded (or incomplete)
[0.131s] Movie_video::DecodeFrontFrame() - frame not decoded (or incomplete)
[0.132s] Movie_video::DecodeFrontFrame() - frame not decoded (or incomplete)
[0.140s] did decode a full image
[0.141s] did decode a full image
[0.162s] did load an audio chunk
[0.162s] did start movie timer
[0.163s] did load an audio chunk
[0.164s] did load an audio chunk
[0.332s] did decode a full image
[0.378s] did decode a full image
[0.417s] did decode a full image
[0.425s] did decode a full image
[0.457s] did decode a full image
[0.491s] did decode a full image
it's ok. As you can see, audio loading finishes about 2ms after the movie timer is started (against which video is synchronized). If it's still late I guess it's because of the audio driver that takes too much time to do the initial load. It'd be great if you could give me the first 30 lines of what you get.
By the way, the purpose of my previous push was to force play() to wait for an audio chunk to be loaded before starting the timer, which is, I guess, what was making audio late in most cases.
Edit: and you made me notice that I'm incorrectly counting incomplete images as displayed images ;D which is why there is 150ms between the 3rd audio loading and the following images loading.
-
In case you get similar results to those that I get right above, which would mean the audio driver is responsible for the audio delay, I can think of one solution. What I could do is not starting playing the video before the audio playing offset changes.
From what I've measured, it changes before 23ms, whereas a common movie at 25 FPS has an image every 40ms. Thus that would mean sfeMovie could miss the first image. But as the first image is preloaded, it could even miss none. This is kinda twisted solution but it would make sure audio and video are always synchronized whatever your OS and drivers are.
-
I did implement the previous idea. It'll be useful even in any case, and much more efficient than what was being done to "ensure" audio synchronization. Rogof, could you tell me whether it's working fine now, and in case it's not, what the debug output is ?
-
I currently have some problems whith my linux system, plus some other issues to attend, so I won't be able to test the library till the next weekend.
-
Ok, then I'll be waiting for the next weekend :) .
-
Hey not sure were to post this, but I seem to get a
Unhandled exception at 0x77e715de (ntdll.dll) in Genesis.exe: Microsoft C++ exception: std::bad_alloc at memory location 0x0075e5b0..
The moment it reaches this line in the stack trace:
if(!PredawnSplash.openFromFile("Recource/SplashScreen/PredawnStudios/predawn_splash.avi"))
The whole chunk of code:
void SplashScreen::PredawnStudiosGenesisSplash(sf::RenderWindow& renderWindow)
{
sfe::Movie PredawnSplash;
if(!PredawnSplash.openFromFile("Recource/SplashScreen/PredawnStudios/predawn_splash.avi"))
return;
And lastly, the line in the call stack.
> Genesis.exe!SplashScreen::PredawnStudiosGenesisSplash(sf::RenderWindow & renderWindow) Line 14 + 0x29 bytes C++
I followed the tutorial on your github. ;D Any ideas on what I did wrong? I see that a lot of other people got this to work, so I doubt its anything to do with sfeMovie. I was just wondering if you had come across this before, and if so, what went wrong, and or, how to fix it. xD
-
Hello Flash619,
Are you mixing debug and release binaries ? The provided sfeMovie binaries are release only.
-
Hello Flash619,
Are you mixing debug and release binaries ? The provided sfeMovie binaries are release only.
Hi Ceylo!
Yep! xD Thats exactly what I'm doing. haha. Is there a way to build any debug binaries? Is it just like building the SFML binaries? Because if so it should be easy.... I think... *doesn't build binaries very often*
Also I was able to get the video playing, well not playing. But the screen flickers a lot, and the audio chops in/out/repeats. I looked and I get about 1 Unknown Skeleton v4.0 error every second. Did my encoding go bad on my video?
I should also point out. I noticed it only plays the sounds when I'm NOT on the render window, and it only displayes the skeleton errors as I move the mouse over the render window. o.O'' Could this just be a huge bug in my programming? Because it seems like it could be a huge bug in my programming...... :|
-
For now building sfeMovie really isn't as easy as SFML, especially because it uses FFmpeg that can't be built within Visual Studio. You can try to follow the wiki instructions (https://github.com/SFML/SFML/wiki/ProjectSfeMovie#wiki-build) though (without forgetting to set the Debug mode in Visual Studio).
But as another user had had the same issue, I'd made a debug build : sfeMovie-msvc-debug.zip (http://lucas.soltic.perso.luminy.univmed.fr/downloads/sfeMovie-msvc-debug.zip) (34KB). You can try this although it doesn't benefit from the latest bug fixes (it's from May 15th).
-
Also I was able to get the video playing, well not playing. But the screen flickers a lot, and the audio chops in/out/repeats. I looked and I get about 1 Unknown Skeleton v4.0 error every second. Did my encoding go bad on my video?
I should also point out. I noticed it only plays the sounds when I'm NOT on the render window, and it only displayes the skeleton errors as I move the mouse over the render window. o.O'' Could this just be a huge bug in my programming? Because it seems like it could be a huge bug in my programming...... :|
If you use the FFmpeg binaries provided within the sfeMove 1.0 RC1 package, note that they only include some decoders : vorbis, theora and flac. Thus if your video uses another codec it won't work until you rebuild sfeMovie and choose to enable more (non-free) decoders.
If you use one of the free decoders for your video and don't mix debug/release binaries, then I'll need to have a closer look at it and fix it.
-
For now building sfeMovie really isn't as easy as SFML, especially because it uses FFmpeg that can't be built within Visual Studio. You can try to follow the wiki instructions (https://github.com/SFML/SFML/wiki/ProjectSfeMovie#wiki-build) though (without forgetting to set the Debug mode in Visual Studio).
But as another user had had the same issue, I'd made a debug build : sfeMovie-msvc-debug.zip (http://lucas.soltic.perso.luminy.univmed.fr/downloads/sfeMovie-msvc-debug.zip) (34KB). You can try this although it doesn't benefit from the latest bug fixes (it's from May 15th).
Well it is just for debugging after all. :)
As for the problems I'm expiriencing, I think they have to do with my events in the loop that I'm rendering the video from. It seems when a even't is poll'd it stops the audio stream, then when the event stops, it restarts it. I also see no video. >_> hmnnn Time to delete things until something works.
-
Also I was able to get the video playing, well not playing. But the screen flickers a lot, and the audio chops in/out/repeats. I looked and I get about 1 Unknown Skeleton v4.0 error every second. Did my encoding go bad on my video?
I should also point out. I noticed it only plays the sounds when I'm NOT on the render window, and it only displayes the skeleton errors as I move the mouse over the render window. o.O'' Could this just be a huge bug in my programming? Because it seems like it could be a huge bug in my programming...... :|
If you use the FFmpeg binaries provided within the sfeMove 1.0 RC1 package, note that they only include some decoders : vorbis, theora and flac. Thus if your video uses another codec it won't work until you rebuild sfeMovie and choose to enable more (non-free) decoders.
If you use one of the free decoders for your video and don't mix debug/release binaries, then I'll need to have a closer look at it and fix it.
The video itself is a .ogv Originally it was a .avi that I converted with "ffmpeg2theora-0.29"
I could try rendering it from the video editor as a stright .ogg and see if that helps. I still say something may be going fuzzy with the way I did things. I'm not even sure if half of this code was even neccesary. I was just trying to be safe xD "that goes for the way I checked the window/video size and so on"
Anyway here is the source code for what I'm doing:
SplashScreen.cpp
#include "stdafx.h"
#include "SplashScreen.h"
#include "WindowEngine.h"
#include <Movie.h>
void SplashScreen::showSplash(sf::RenderWindow& renderWindow)
{
PredawnStudiosGenesisSplash(renderWindow);
}
void SplashScreen::PredawnStudiosGenesisSplash(sf::RenderWindow& renderWindow)
{
sfe::Movie PredawnSplash;
if(!PredawnSplash.openFromFile("Recource/SplashScreen/PredawnStudios/predawn_splash.ogv"))
{
return;
}
sf::Vector2u WindowSize = renderWindow.getSize();
sf::Vector2i PredawnSplashSize = PredawnSplash.getSize();
int PositionX = (WindowSize.x / 4);
int PositionY = (WindowSize.y / 4);
int SplashX = PredawnSplashSize.x;
int SplashY = PredawnSplashSize.y;
int CenterX = (PredawnSplashSize.x / 2);
int CenterY = (PredawnSplashSize.y / 2);
PredawnSplash.setOrigin(CenterX,CenterY);
PredawnSplash.setPosition(PositionX,PositionY);
if(SplashX > WindowSize.x)
SplashX = WindowSize.x;
if(SplashY > WindowSize.y)
SplashY = WindowSize.y;
PredawnSplash.resizeToFrame(0,0,SplashX,SplashY);
PredawnSplash.play();
while(PredawnSplash.Playing)
{
sf::Event PredawnSplashEvent;
while(renderWindow.pollEvent(PredawnSplashEvent))
{
if(PredawnSplashEvent.type = sf::Event::Closed)
{
PredawnSplash.stop();
}
if(PredawnSplashEvent.type = sf::Event::MouseButtonPressed)
{
PredawnSplash.stop();
}
if(PredawnSplashEvent.type = sf::Event::KeyPressed)
{
PredawnSplash.stop();
}
}
renderWindow.clear();
renderWindow.draw(PredawnSplash);
renderWindow.display();
}
return;
}
Let me know what I did wrong, or what I shouldn't have done and so on. I still think somethings going wrong with that loop I just can't lay a finger on it. Perhaps when a more expirienced eye such as yourself see's it. You may be able to give some recomendations. I too will be trying to figure this out. xD
Well off to dinner for now. Be back in about an hour. :)
-
if(PredawnSplashEvent.type = sf::Event::Closed)
should be
if(PredawnSplashEvent.type == sf::Event::Closed)
Same for the other tests.
And I'm not sure what you want to do with
int PositionX = (WindowSize.x / 4);
int PositionY = (WindowSize.y / 4);
int SplashX = PredawnSplashSize.x;
int SplashY = PredawnSplashSize.y;
int CenterX = (PredawnSplashSize.x / 2);
int CenterY = (PredawnSplashSize.y / 2);
PredawnSplash.setOrigin(CenterX,CenterY);
PredawnSplash.setPosition(PositionX,PositionY);
if(SplashX > WindowSize.x)
SplashX = WindowSize.x;
if(SplashY > WindowSize.y)
SplashY = WindowSize.y;
but the movie's position and scaling are overwritten by
PredawnSplash.resizeToFrame(0,0,SplashX,SplashY);
thus your setPosition() seems useless.
Edit : And PredawnSplash.Playing is a enum value, thus testing your while loop against it has no meaning. You probably wanted to write "while (PredawnSplash.getStatus() == sfe::Movie::Playing)".
-
if(PredawnSplashEvent.type = sf::Event::Closed)
should be
if(PredawnSplashEvent.type == sf::Event::Closed)
Same for the other tests.
And I'm not sure what you want to do with
int PositionX = (WindowSize.x / 4);
int PositionY = (WindowSize.y / 4);
int SplashX = PredawnSplashSize.x;
int SplashY = PredawnSplashSize.y;
int CenterX = (PredawnSplashSize.x / 2);
int CenterY = (PredawnSplashSize.y / 2);
PredawnSplash.setOrigin(CenterX,CenterY);
PredawnSplash.setPosition(PositionX,PositionY);
if(SplashX > WindowSize.x)
SplashX = WindowSize.x;
if(SplashY > WindowSize.y)
SplashY = WindowSize.y;
but the movie's position and scaling are overwritten by
PredawnSplash.resizeToFrame(0,0,SplashX,SplashY);
thus your setPosition() seems useless.
Edit : And PredawnSplash.Playing is a enum value, thus testing your while loop against it has no meaning. You probably wanted to write "while (PredawnSplash.getStatus() == sfe::Movie::Playing)".
Oh wow. >_< I always switch around the = and the == symboles.
As for the large chunk of code. I was just checking the windows size and compairing it to that of the default size of the video. If the window is too small for the default video size, it scales the video to the right window size before playing it.
Thanks for the info on the enum. You were correct with what I wanted. :)
I was not aware that "PredawnSplash.resizeToFrame(0,0,SplashX,SplashY);" would overwrite that but now that I know I will update it to include the proper position. Though, I was woundering what those to 0's were about. ::)
Have a nice day, and thanks a bunch for the help! I look foreward to hooking this up and testing. :D
-
So I seem to still get audio, but no video. All that happens video wise, is I originally, right after my WindowEngine launches the render window. I print a "Loading..." to the upper left corner. Something video wise happens because it does flicker a lot. But nothing new renders to the screen at all. I only get 1 unknown skeleton version 4.0 error. I think that may have to do with why there is no video.
I will include a copy of my most up to date code.
#include "stdafx.h"
#include "SplashScreen.h"
#include "WindowEngine.h"
#include <Movie.h>
void SplashScreen::showSplash(sf::RenderWindow& renderWindow)
{
PredawnStudiosGenesisSplash(renderWindow);
}
void SplashScreen::PredawnStudiosGenesisSplash(sf::RenderWindow& renderWindow)
{
sfe::Movie PredawnSplash;
if(!PredawnSplash.openFromFile("Recource/SplashScreen/PredawnStudios/predawn_splash.ogv"))
{
return;
}
sf::Vector2u WindowSize = renderWindow.getSize();
sf::Vector2i PredawnSplashSize = PredawnSplash.getSize();
int PositionX = (WindowSize.x / 4);
int PositionY = (WindowSize.y / 4);
int SplashX = PredawnSplashSize.x;
int SplashY = PredawnSplashSize.y;
int CenterX = (PredawnSplashSize.x / 2);
int CenterY = (PredawnSplashSize.y / 2);
PredawnSplash.setOrigin(CenterX,CenterY);
if(SplashX > WindowSize.x)
SplashX = WindowSize.x;
if(SplashY > WindowSize.y)
SplashY = WindowSize.y;
PredawnSplash.resizeToFrame(PositionX,PositionY,SplashX,SplashY);
PredawnSplash.play();
while(PredawnSplash.getStatus() == sfe::Movie::Status::Playing)
{
sf::Event PredawnSplashEvent;
while(renderWindow.pollEvent(PredawnSplashEvent))
{
if(PredawnSplashEvent.type == sf::Event::Closed)
{
PredawnSplash.stop();
}
if(PredawnSplashEvent.type == sf::Event::MouseButtonPressed)
{
PredawnSplash.stop();
}
if(PredawnSplashEvent.type == sf::Event::KeyPressed)
{
PredawnSplash.stop();
}
}
renderWindow.clear();
renderWindow.draw(PredawnSplash);
renderWindow.display();
}
return;
}
I think I'm going to do some snooping on my video codec's. Do let me know if you have any ideas. :)
Also, kind of off the subject, but do you know how to make it so visual studio can find files and resources while debugging? It doesn't find my video file in debugging mode, yet if I go to the directory and run it manually, it works just fine. Just a little annoying because it makes debugging impossible. Anyway. Let me know what you think.
Also, the video does play perfectly in VLC. So I at least know that it does have a video track. xD
Also, again, if you want a copy of the video for testing let me know. :)
EDIT
found this, I plan to read it, all.
http://roundup.libav.org/issue2600
EDIT Just tried a different encoder, same issue. >_> Though, now it seems I no longer get the skeleton error. So.... Thats fixed, but its still not working. xD
-
Just to make sure, did you try to play your video with the provided sfeMovie sample (sample/main.cpp in the Git repo or the "src" package) ? Just change the name of the file to load.
If it still doesn't work, can you give me a sample of the video in order to reproduce the issue ?
-
Just to make sure, did you try to play your video with the provided sfeMovie sample (sample/main.cpp in the Git repo or the "src" package) ? Just change the name of the file to load.
If it still doesn't work, can you give me a sample of the video in order to reproduce the issue ?
I just did, the example video did the same thing. :/ ...not sure where to go from here.
Fortunettely for now, I can continue working on the engine since you can skip the video by pressing any button ;) Though, I still have to figure out whats wrong, at this point, I havn't a clue.
-
...not sure where to go from here.
I think you do :P :
If it still doesn't work, can you give me a sample of the video in order to reproduce the issue ?
-
...not sure where to go from here.
I think you do :P :
If it still doesn't work, can you give me a sample of the video in order to reproduce the issue ?
Well I had the same issue with the sample video, which was named "big_buck_bunny_480p_stereo.ogg"
It's too big to upload here, but I downloeded it from your example you posted.
Both, my video, and your video, did the same thing. I'm not sure if its the video anymore. :|
Just the same though, I'll send a PM with a link to a location to download the videos from my website.
-
I've tested the latest source (commit 0ccadac) and the audio plays in sync this time.
Thanks.
-
I've tested the latest source (commit 0ccadac) and the audio plays in sync this time.
Thanks.
Great!! :D
Thanks for your help too :) .
-
Hey guys,
I'm definitly new to SFML and sfeMovie, so maybe my question seems stupid or silly.
I installed SFML and sfeMovie on my Windows XP 32bit machine in MSVC+ 2008 Express. Than I compiled and linked the given example for sfeMovie, which you can find on the wiki. But when I closed the SFML Window, everytime an error occured about memory overwrite. I think it comes with sfeMovie and not with SMFL itself, because without adding a movie widget everything works alright. I also tried to compile in Debug and in Release mod, but the error stayed the same.
This is the error message (i try to translate it to English, because at my computer it is German, so don't kill me for my English :) )
Unhandled excaption at point 0x004c53cc in SMFL_Test.exe: 0xC0000005: Access violation while reading at position 0x056ac040.
The editor is not able to show a line in code where it happens. He can only give me the disassembly:
[...]
004C53B3 mov ecx,dword ptr [esi+10h]
004C53B6 mov dword ptr [esi+0Ch],1
004C53BD push ecx
004C53BE call 00495880
004C53C3 mov eax,dword ptr [esi+8]
004C53C6 mov dword ptr [esi+10h],edi
004C53C9 mov dword ptr [esi+0Ch],edi
004C53CC mov edx,dword ptr [eax]
004C53CE add esp,4
004C53D1 push eax
004C53D2 mov eax,dword ptr [edx+8]
004C53D5 call eax
004C53D7 mov eax,dword ptr [esi+4]
004C53DA mov dword ptr [esi+8],edi
004C53DD cmp eax,edi
[...]
The error occurs at 004C53CC mov edx, dword ptr [eax].
Is that a error based on my stupidnes or has it to do with the sfeMovie script? Can anyone tell me how to fix?
-
Are you mixing release/debug modes or mixing static/dynamic linking for SFML and sfeMovie ?
You should make sure you link everything dynamically in release mode.
-
Are the sfeMovie *.lib files made for Release or Debug? Than I can answer that :D
-
The provided one in the 1.0 RC1 package are made for Release.
-
Okey, I tried everything what is thinkable (i think :D)
1) sfe-movie.lib with SMFL *.lib on Release
2) sfe-movie.lib with SMFL *-d.lib on Release
3) sfe-movie.lib with SFML *-s.lib on Release
4) sfe-movie.lib with SFML *-s-d.lib on Release
On 3) and 4) the linker returned a lot of errors. When using 2) it crashes while loading the window. And 1) is the described error thing.
And when I'm right I'm linking dynamicly, because I need all the *.dll files to execute the programm.
Am I doing anything wrong?
-
Hmmm looks like you didn't do anything wrong. Could you provide a minimal package with everything required to reproduce the crash ? (including your project file)
-
Here it is. It includes the VC-Project, the cpp file and the video I used (btw. i tried another one, but nothing changed).
http://www.file-upload.net/download-4583063/SMFL.zip.html
-
Ok I remember now. This is related to https://github.com/SFML/SFML/issues/30 and the OpenAL dll. I got it working using the binary from http://kcat.strangesoft.net/openal.html#download (take Win32/soft_oal.dll, rename it to openal32.dll and replace it in your executable's directory).
Tell me if it works for you too :) .
-
Ah ok ... now i know why another exampled failed when searching for the process entry point :D
I'll try when I'm at home again. Thanks a lot!
-
Ok I did exactly what you said, but it didn't change the problem.
The exception changed a bit: now its at position
Unhandled excaption at point 0x6b627bc5 in SMFL_Test.exe: 0xC0000005: Access violation while reading at position 0x05670148
The disassemly code stays the same.
-
Is there any other OpenAL dll installed on your system ?
Edit: does the error also occurs when building in release mode and launching this executable outside of Visual Studio ?
-
No I searched the whole PC for another openal32.dll ... didn't found any.
Yeah it's occuring everytime -.-
-
sfeMovie 1.0 has been released!
As sfeMovie isn't anymore a small wiki code but a real project, I created a new topic in the correct section. News will be posted there and discussions should now happen there too : http://en.sfml-dev.org/forums/index.php?topic=8701.msg58578#msg58578
Changes since RC include:
- Fix crash on sws_scale (fixes behavior on Linux for Intel 64 bits, OS X for Intel 32 bits and Windows 8 for Intel 64 bits)
- Fix crash when no audio or video codec was found
- Fix audio desynchronization at start caused by the audio driver latency
- Fix black border on the right for low resolution movies
- Add Linux port
- Add some free decoders in the provided build: WMV/WMA decoders on Windows, H264 on OS X, VP8 on every OS
-
I've got a problem when trying to link with libsfeMovie.dll.a (using MinGW (up-to-date)).
I tried the binary release and a self-compiled version, both give me the same error:
||=== Project, Debug ===|
c:\mingw\bin\..\lib\gcc\mingw32\4.7.0\libgcc_eh.a(unwind-dw2.o)|| multiple definition of `__Unwind_Resume'|
C:\sfeMovie-1.0\lib\libsfeMovie.dll.a(d000140.o)|| first defined here|
||=== Build finished: 2 errors, 0 warnings ===|
Do you know how I can fix that?
-
What's the output if you rebuild sfeMovie after having removed the line 113 in CMakeLists.txt?
set (LINKER_FLAGS ${LINKER_FLAGS} "-static-libgcc")
-
Hey, that seems to work.
I'm now recompiling with the correct settings.
-
After properly setting up everything it does work, thank you!
There are two more things though.
1. How can I compile a static-linked version?
2. Is it possible to load the video from memory?
-
After properly setting up everything it does work, thank you!
Nice!
1. How can I compile a static-linked version?
You cannot. Or if you want a more precise answer: I didn't provide any way to do so (till now).
2. Is it possible to load the video from memory?
No. I may — in the future — let the user load the video from a sf::InputStream, but most probably not from memory.
-
Did anyone successfully compiled sfeMovie for Visual Studio 2012?
-
Did anyone successfully compiled sfeMovie for Visual Studio 2012?
VS 2010 binary worked fine for me
-
Hello!
I can get this library to work :( ( vs2012 )
After the program compiles and runs there is no picture. There are several dll-s but none of them is working. There is sound from the bunny animation. What could be the problem?
MovieState.h
#ifndef MovieState_h__
#define MovieState_h__
#include <SFML/Graphics.hpp>
#include <SFML/Graphics/Texture.hpp>
#include "sfe/include/sfeMovie/Movie.hpp"
#include "gameState.h"
#include "Globals.h"
class Game;
class MovieState :public GameState{
private:
//pointer to the game (for the render)
Game *game;
sfe::Movie* intro;
public:
MovieState();
MovieState(Game*);
~MovieState();
void Update();
void Draw();
};
#endif // MovieState_h__
MovieState.cpp
#include "MovieState.h"
#include "game.h"
//DO NOT USE
MovieState::MovieState(){}
MovieState::MovieState( Game *game )
{
intro = new sfe::Movie;
this -> game = game;
// if( !intro->openFromFile( "introkszk.ogv" ) )
// game->currentState = MENU;
intro->openFromFile( "some_movie.ogv" );
game->window.Getwindow().setVerticalSyncEnabled( true );
//intro.resizeToFrame( 0 , 0 , Globals::resolution->xres , Globals::resolution->yres );
intro->play();
Globals::log->log( "intro" );
}
MovieState::~MovieState(){}
void MovieState::Update()
{
// if( sf::Keyboard::isKeyPressed( sf::Keyboard::Space ) || sf::Keyboard::isKeyPressed( sf::Keyboard::Escape ) )
// {
// game->currentState = MENU;
// }
}
void MovieState::Draw()
{
game -> window.Getwindow().draw( *intro );
}
-
Hello gazben,
At the moment I cannot really help you because your code is neither complete nor minimal.
You should check what sfe::Movie::openFromFile() returns, although it seems to work as you say there's sound.
You also need to give a size to the drawable, and make sure your Draw() method is really called.
-
It works now :) There was a problem with the linker options. But there is another problem. When a try to close the program this pops up: First-chance exception at 0x75CBA4B9 (ole32.dll) in project.exe: 0xC0000005: Access violation reading location 0xFEEEFEEE.
What could be the problem?
-
I cannot be sure but this is most probably this issue: http://lucas.soltic.etu.p.luminy.univ-amu.fr/sfeMovie/faq.php#windows-crash-at-exit
-
I just dl'd and got the vs2010 binaries working with your test code, so first off thanks for making sfeMovie not a pain in the ass to setup (I also tried cmusphinx today and those guys...left out a few steps).
I wanted to ask if these error messages in the console are a problem at all:
(http://gyazo.com/109022ed5a38007afadde711d36c2c1c.png)
As you can see the actual video made it all the way to the end; I didn't see or hear anything with the video itself that implied a problem.
Also, any idea how to get rid of the console entirely? My VS project isn't a console app.
Edit: The ad-hoc #pragma method for getting rid of it shown here (http://www.irrlicht3d.org/wiki/index.php?n=Main.DisablingConsoleWindow) seemed to work, though I'd still like to know how it got in there in the first place.
Plus I hit another snag: Closing the window causes an unhandled exception/access violation. All the debugger can tell me is that it's happening sometime after main() exits. Never mind, forgot about SFML's longstanding audio crash issues (https://github.com/SFML/SFML/issues/30). I really hope that gets fixed someday. =(
-
Hello Ixrec,
Glad you like sfeMovie!
I wanted to ask if these error messages in the console are a problem at all:
I don't know: I often see those too, it depends on the movie I read. So until it works and until you don't get errors printed, I guess it's ok.
Also, any idea how to get rid of the console entirely? My VS project isn't a console app.
You mean you chose to make a GUI application when creating your project but VS is still showing this console?
Plus I hit another snag: Closing the window causes an unhandled exception/access violation. All the debugger can tell me is that it's happening sometime after main() exits.
You'd need to check but I guess it is
I use Windows and my program crashes at exit
Check out SFML issue #30 (https://github.com/SFML/SFML/issues/30).
I wonder if there's any workaround at the moment though.
-
I believe I chose an empty project, to be precise. I'm fairly sure it didn't auto-generate any useless code for me.
I think my only real concern with the library at this point is that I can't statically link to it, which means I'd be going from 2 dlls in my project to 11 (since I can't link SFML statically while using sfeMovie). Then again your library actually uses multithreading so there may be a legitimate benefit to dynamic linking in this case, in addition to not having to worry about whatever the hell the LGPL actually requires...ugh.
-
I believe I chose an empty project, to be precise. I'm fairly sure it didn't auto-generate any useless code for me.
Then you should be able to fix this in the project's properties.
I think my only real concern with the library at this point is that I can't statically link to it, which means I'd be going from 2 dlls in my project to 11 (since I can't link SFML statically while using sfeMovie). Then again your library actually uses multithreading so there may be a legitimate benefit to dynamic linking in this case, in addition to not having to worry about whatever the hell the LGPL actually requires...ugh.
There is a constraint that prevents full static linking but multithreading isn't one. The fact that's you can't statically link against sfeMovie yet is just because I didn't make it possible yet. That's on the todo list (https://github.com/Yalir/sfeMovie/issues/42) though. However, when using VS, you'll always at least have the FFmpeg dlls next to your program, because FFmpeg libraries were not built with VS, and it somehow works when linked dynamically, but not statically (function addresses).
So what is possible but yet "to be done" is linking against static SFML and sfeMovie libraries, but keep FFmpeg dlls.
-
Out of curiosity, is it possible to build ffmpeg from source as a single dll? Is there any particular reason it's split up like that?
When I mentioned multithreading I didn't mean to say that I thought it made static linking impossible; rather I mean it might give dynamic linking a legitimate benefit (because multiple threads share the code) beyond merely keeping the LGPL happy. No idea if that's a real issue with real performance implications, but that possibility is what I was referring to.
-
FFmpeg does not provide any way to build a single, but it is technically possible yes. However, the FFmpeg license doesn't allow this. And from what I know... it's split up because it's several projects put together for FFmpeg.
-
Thanks for clearing that up.
Also, since sfeMovie is also under LGPL, how would static linking work? Would it require me to put sfeMovie source somewhere in my distribution? I've read a lot about the LGPL but tl;dr no one seems to have a clue what it actually means, so I kind of have to ask you what you intend it to mean for sfeMovie.
By the way, any reason you used std::cerr instead of sf::err()? (or maybe sfe::err()) I can't figure out a way to redirect std::cerr so I can deal with sfeMovie errors myself, plus it seems a bit inconsistent.
Edit: I think I'm done playing around with this for the time being. Unfortunately I still get the crash-on-exit bug in any code that constructs an sfe::Movie object, yet not in any of my own code. I know the bug isn't on your end but I won't be able to integrate this library until there's some kind of solution for that (and preferably the static link option).
-
Hmm.. I forgot to answer, sorry.
Thanks for clearing that up.
Also, since sfeMovie is also under LGPL, how would static linking work? Would it require me to put sfeMovie source somewhere in my distribution? I've read a lot about the LGPL but tl;dr no one seems to have a clue what it actually means, so I kind of have to ask you what you intend it to mean for sfeMovie.
This would mean your software is under LGPL too and you have to provide the sources of your program. You have to provide sfeMovie's sources only if you modify them. So depending on whether your project is private/commercial, this can be annoying.
By the way, any reason you used std::cerr instead of sf::err()? (or maybe sfe::err()) I can't figure out a way to redirect std::cerr so I can deal with sfeMovie errors myself, plus it seems a bit inconsistent.
Is "because I didn't think of sf::Err" a valid answer? ;D However, redirecting std::err or sf::Err should be exactly the same thing, because they're both std::ostream objects, or I missed something.
Edit: I think I'm done playing around with this for the time being. Unfortunately I still get the crash-on-exit bug in any code that constructs an sfe::Movie object, yet not in any of my own code. I know the bug isn't on your end but I won't be able to integrate this library until there's some kind of solution for that (and preferably the static link option).
Yup I understand, I don't know when that'll be fixed though.
-
Hi! I recently dealt with the work of SFML + sfe, but immediately ran into a problem. When I change the video file ("movie.openFromFile(playlist[file_num]") i get memory leak, maybe I'm doing something wrong ...
*I also tried to allocate memory dynamically, but the operator "delete movie" do not release a memory.
my code:
#include <SFML/Graphics.hpp>
#include <sfeMovie/Movie.hpp>
#include <iostream>
#include <vector>
using namespace std;
int main(int argc, const char *argv[])
{
vector<string> playlist;
playlist.push_back("Skorbaks31.12.13_wmv2.avi");
playlist.push_back("porche_wmw.avi");
playlist.push_back("exp11_01_p1_wmv2_001.avi");
// Some settings
const std::string windowTitle = "sfeMovie Player";
const int windowWidth = 800;
const int windowHeight = 600;
bool fullscreen = false;
std::string movieFile;
if (argc < 2)
{
std::cout << "Usage: " << std::string(argv[0]) << " movie_path" << std::endl;
//return 1;
movieFile=playlist[0];
}
else
{
movieFile = std::string(argv[1]);
}
std::cout << "Going to open movie file \"" << movieFile << "\"" << std::endl;
// Create window
// sf::RenderWindow window(sf::VideoMode(windowWidth, windowHeight), windowTitle, sf::Style::Close);
sf::RenderWindow window(sf::VideoMode::getDesktopMode(), windowTitle, sf::Style::Fullscreen);
window.setFramerateLimit(60);
// Create and open movie
sfe::Movie movie;
//movie=new sfe::Movie();
if (!movie.openFromFile(movieFile))
return 1;
// Scale movie to the window drawing area and enable VSync
movie.resizeToFrame(0, 0, window.getSize().x, window.getSize().y);
window.setVerticalSyncEnabled(true);
sf::Texture pTexture;
sf::Font font1;
font1.loadFromFile("arial.ttf");
sf::Text text1;
text1.setFont(font1);
text1.setStyle(sf::Text::Bold);
text1.setColor(sf::Color::Green);
text1.setPosition(300,50);
sf::Sprite playerImage;
if (!pTexture.loadFromFile("image.png")) //,sf::IntRect(32,0,32,32))
cout<<"Error loadd image"<<endl;
playerImage.setTexture(pTexture);
float timer1=0;
sf::Clock cl1;
// Start movie playback
// movie.play();
int counter=0;
int file_num=0;
char *buf=new char(255);
playerImage.move(500,300);
movie.play();
while (window.isOpen())
{
/*
timer1 =cl1.getElapsedTime().asMilliseconds();
//itoa((int)1000/timer1,buf,10);
sprintf(buf, "%f", 1000/timer1);
text1.setString(buf);
cl1.restart();
*/
if (movie.getStatus()<2){
//movie.play();
movie.stop();
//delete movie;
//movie=NULL;
//movie=new sfe::Movie();
text1.setString("OFF");
file_num++;
if (file_num>=playlist.size())
file_num=0;
if (movie.openFromFile(playlist[file_num]))
{
window.setVerticalSyncEnabled(true);
movie.resizeToFrame(0, 0, window.getSize().x, window.getSize().y);
movie.play();
}
else
{
exit(0);
}
}
else
{
text1.setString("ON");
}
sf::Event ev;
while (window.pollEvent(ev))
{
// Window closure
if (ev.type == sf::Event::Closed ||
(ev.type == sf::Event::KeyPressed &&
ev.key.code == sf::Keyboard::Escape))
{
window.close();
}
// Handle basic controls
else if (ev.type == sf::Event::KeyPressed)
{
// Play/Pause
if (ev.key.code == sf::Keyboard::Space)
{
if (movie.getStatus() != sfe::Movie::Playing)
movie.play();
else
movie.pause();
}
// Stop
if (ev.key.code == sf::Keyboard::S)
movie.stop();
// Restart playback
if (ev.key.code == sf::Keyboard::R)
{
movie.stop();
movie.play();
}
// Toggle fullscreen mode
if (ev.key.code == sf::Keyboard::F)
{
fullscreen = !fullscreen;
// We want to switch to the full screen mode
if (fullscreen)
{
window.create(sf::VideoMode::getDesktopMode(), windowTitle, sf::Style::Fullscreen);
window.setVerticalSyncEnabled(true);
movie.resizeToFrame(0, 0, window.getSize().x, window.getSize().y);
}
// We want to switch back to the windowed mode
else
{
window.create(sf::VideoMode(windowWidth, windowHeight), windowTitle, sf::Style::Close);
window.setVerticalSyncEnabled(true);
movie.resizeToFrame(0, 0, window.getSize().x, window.getSize().y);
}
}
}
}
// Render movie
counter++;
// Render movie
if (counter>2){
playerImage.rotate(0.2);
counter=0;
}
window.clear();
window.draw(movie);
window.draw(playerImage);
window.draw(text1);
window.display();
}
return 0;
}
-
Hi Rodion777,
No, you did nothing wrong. After running your program and using a leak detection tool, it showed me that there was indeed a leak (and a big one ;D). I've made a fix and I can no more see the leak now. Please tell me if it's ok on your side too :) The fix is available with the latest sources from the git repo.
Ceylo
-
Thx for operativeness! But I don't have experience with Linux compilers. I tried to build with MinGW for Windows, but I didn't succeed. Please compile the updated library or give step by step manual. Instructions from section "Getting started" was not enough for me.
-
Hum yes you're right, building steps changed "a bit" since version 1.0.
Do you need to build sfeMovie for Linux or Windows or both?
-
My programm will working on windows, but I would like to know both ways.
-
I don't know if you're familiar with CMake tools but except with Windows, the build steps are quiet usual:
On Linux, choose your settings with the CMake GUI then run make and sudo make install.
On Windows, make sure you have a full MinGW+MSYS installation, then use the CMake GUI, then build sfeMovie within your IDE.
There are some important configuration choices during the CMake step:
- CMAKE_BUILD_TYPE, either Release or Debug, and the build mode in your Windows IDE need to match this setting
- LINK_AGAINST_INTERNAL_FFMPEG, to choose whether you want to provide your own FFmpeg binaries (FALSE) or let the sfeMovie build process also build FFmpeg (TRUE)
- ENABLED_DECODERS, in case LINK_AGAINST_INTERNAL_FFMPEG=TRUE, this defines the video/audio codecs that will be supported by the final sfeMovie build.
- SFML_ROOT, set to the directory containing SFML include et lib directories
- MINGW_DIR, on Windows, is the path of the directory of your MinGW (also containing MSYS) installation
-
I'm sorry but I have again failed to compile. Compile please for windows. (Debug and Release)
-
I'm sorry but I have again failed to compile.
What failed exactly?
I think it's more important to have a clear build guide that everybody understands than providing binaries. I already built sfeMovie for Windows some time ago, but things may have changed meanwhile.
-
My actions:
1. I downloaded and installed full MinGW with msys from official site. (C:\MinGW)
2. I downloaded and installed Cmake with GUI ("C:\CMake 2.8")
3. I execute "cmake-gui.exe" and choose a folder with unpacked sfeMovie sources
4. I set output folder for build
5. I press Configure button
6. I set generator for generate VS10 project
7. In the same window I set option: "Use default native compilers"
8. Next step compiling begin and compiler return error:
Compilation log:
The C compiler identification is MSVC 16.0.30319.1
The CXX compiler identification is MSVC 16.0.30319.1
Check for working C compiler using: Visual Studio 10
Check for working C compiler using: Visual Studio 10 -- broken
CMake Error at C:/CMake 2.8/share/cmake-2.8/Modules/CMakeTestCCompiler.cmake:61 (message):
The C compiler "C:/Program Files/Microsoft Visual Studio
10.0/VC/bin/cl.exe" is not able to compile a simple test program.
It fails with the following output:
Change Dir: C:/MinGW/msys/1.0/home/Rodion/CMakeFiles/CMakeTmp
Run Build Command:C:\PROGRA~1\MICROS~2.0\Common7\IDE\devenv.com
CMAKE_TRY_COMPILE.sln /build Debug /project cmTryCompileExec1556368347
Microsoft (R) Visual Studio Version 10.0.30319.1.
Copyright (C) Microsoft Corp. All rights reserved.
1>------ Build started: Project: cmTryCompileExec1556368347, Configuration:
Debug Win32 ------
1> Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01
for 80x86
1> Copyright (C) Microsoft Corporation. All rights reserved.
1>
1> cl /c /Zi /W3 /WX- /Od /Ob0 /Oy- /D WIN32 /D _WINDOWS /D _DEBUG /D
"CMAKE_INTDIR=\"Debug\"" /D _MBCS /Gm- /RTC1 /MDd /GS /fp:precise
/Zc:wchar_t /Zc:forScope /Fo"cmTryCompileExec1556368347.dir\Debug\\"
/Fd"cmTryCompileExec1556368347.dir\Debug\vc100.pdb" /Gd /TC /analyze-
/errorReport:prompt testCCompiler.c
1>
1> testCCompiler.c
1>LINK : fatal error LNK1123: failure during conversion to COFF: file
invalid or corrupt
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped
==========
CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
CMakeLists.txt:11 (project)
Configuring incomplete, errors occurred!
See also "C:/MinGW/msys/1.0/home/Rodion/CMakeFiles/CMakeOutput.log".
See also "C:/MinGW/msys/1.0/home/Rodion/CMakeFiles/CMakeError.log".
/*******************************************************************/
CMakeError.log :
Determining if the C compiler works failed with the following output:
Change Dir: C:/MinGW/msys/1.0/home/Rodion/CMakeFiles/CMakeTmp
Run Build Command:C:\PROGRA~1\MICROS~2.0\Common7\IDE\devenv.com CMAKE_TRY_COMPILE.sln /build Debug /project cmTryCompileExec3931991746
Microsoft (R) Visual Studio Version 10.0.30319.1.
Copyright (C) Microsoft Corp. All rights reserved.
1>------ Build started: Project: cmTryCompileExec3931991746, Configuration: Debug Win32 ------
1> Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86
1> Copyright (C) Microsoft Corporation. All rights reserved.
1>
1> cl /c /Zi /W3 /WX- /Od /Ob0 /Oy- /D WIN32 /D _WINDOWS /D _DEBUG /D "CMAKE_INTDIR=\"Debug\"" /D _MBCS /Gm- /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Fo"cmTryCompileExec3931991746.dir\Debug\\" /Fd"cmTryCompileExec3931991746.dir\Debug\vc100.pdb" /Gd /TC /analyze- /errorReport:prompt testCCompiler.c
1>
1> testCCompiler.c
1>LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
-
Not sure if that still applies but looking at the official website it says:
To build sfeMovie, make sure you have CMake, Make and Clang/GCC installed. You'll also need Visual Studio if you want to build sfeMovie for this IDE. Then download the latest sources (see Downloads section), and run build.sh from a command line interpreter. Directly using CMake will not work!
-
Not sure if that still applies but looking at the official website it says:
To build sfeMovie, make sure you have CMake, Make and Clang/GCC installed. You'll also need Visual Studio if you want to build sfeMovie for this IDE. Then download the latest sources (see Downloads section), and run build.sh from a command line interpreter. Directly using CMake will not work!
official website it says also:
Windows specific
sfeMovie relies on FFmpeg, and to build FFmpeg you need a Unix environment plus some settings. This can be achieved by following these steps:
download the latest MinGW binary from this page
install MinGW, without forgetting to enable: C++ Compiler, MSYS Basic System and MinGW Developer ToolKit
install CMake (see CMake website) and accept setting CMake in your PATH
launch the MinGW shell (C:\MinGW\msys\1.0\msys.bat)
within the command line interpreter, go to the directory where you downloaded sfeMovie through the "cd" command, type "./build.sh windows" and return
Note if you use Visual Studio, you'll need to finish the compilation process using the generated sfeMovie.sln solution. For technical reasons, when targeting Visual Studio, the sfeMovie library is dynamically linked against FFmpeg (instead of static linking when targeting MinGW/CodeBlocks). This implies that you'll also have to copy the newly built FFmpeg DLLs from sfeMovie/deps/ffmpeg-build once you've built sfeMovie, in order to use the new set of decoders.
I also tried it, but in the source code folder there is no file "build.sh" but there is a file "build_ffmpeg.sh".
execution of commands "./build_ffmpeg.sh windows" given nothing
-
Not sure if that still applies but looking at the official website it says:
Indeed these do no more apply (but that's a nice try :D), they only apply to the sfeMovie 1.0 source package.
The issue here isn't about sfeMovie but about how to setup CMake to work with VS. And the important part is described in SFML's tutorial: http://www.sfml-dev.org/tutorials/2.1/compile-with-cmake.php (section Configuring your SFML build)
With Visual C++, you can either run CMake from the "Visual Studio command prompt" available from the start menu, or call the vcvars32.bat file of your Visual Studio installation; it will setup the environment variables properly.
> your_visual_studio_folder\VC\bin\vcvars32.bat
> cmake
The issue is that CMake doesn't know anything about your VS installation, thus you need to tell it how it can use VS compiler. That's what is done when executing the vcvars32.bat file (automatically executed when launching the VS command line prompt).
I'm not a Windows expert so I don't know if you really have to run CMake from the VS command line prompt or if there is a graphical way of doing so. I hope that'll help you though. Maybe SFML users know a bit more about this :) .
-
I also tried it, but in the source code folder there is no file "build.sh" but there is a file "build_ffmpeg.sh".
execution of commands "./build_ffmpeg.sh windows" given nothing
Indeed many things changed on the build system and build.sh does no more exist. As for the build_ffmpeg.sh, you should never need to execute it manually.
About my above post, from what I remember, I don't need to run vcvars32.bat, but I built sfeMovie on Windows a long time ago and I don't remember what I did to achievd this :(
-
Hi!
I have a progress! I found out that .Net 4.5 framework interfere with cmake, after i unistalled .Net 4.5 framework there were less errors, but i have new errors:
CMake Error at C:/CMake 2.8/share/cmake-2.8/Modules/CMakeDetermineCompilerId.cmake:446 (execute_process):
execute_process given COMMAND argument with no value.
Call Stack (most recent call first):
C:/CMake 2.8/share/cmake-2.8/Modules/CMakeDetermineCompilerId.cmake:48 (CMAKE_DETERMINE_COMPILER_ID_VENDOR)
C:/CMake 2.8/share/cmake-2.8/Modules/CMakeDetermineCCompiler.cmake:131 (CMAKE_DETERMINE_COMPILER_ID)
CMakeLists.txt:11 (project)
The C compiler identification is unknown
CMake Error at C:/CMake 2.8/share/cmake-2.8/Modules/CMakeDetermineCompilerId.cmake:446 (execute_process):
execute_process given COMMAND argument with no value.
Call Stack (most recent call first):
C:/CMake 2.8/share/cmake-2.8/Modules/CMakeDetermineCompilerId.cmake:48 (CMAKE_DETERMINE_COMPILER_ID_VENDOR)
C:/CMake 2.8/share/cmake-2.8/Modules/CMakeDetermineCXXCompiler.cmake:127 (CMAKE_DETERMINE_COMPILER_ID)
CMakeLists.txt:11 (project)
The CXX compiler identification is unknown
Using these FFmpeg libraries:
- C:/MinGW/msys/1.0/home/Rodion/FFmpeg-binaries/lib/avformat.lib
- C:/MinGW/msys/1.0/home/Rodion/FFmpeg-binaries/lib/avdevice.lib
- C:/MinGW/msys/1.0/home/Rodion/FFmpeg-binaries/lib/avcodec.lib
- C:/MinGW/msys/1.0/home/Rodion/FFmpeg-binaries/lib/avutil.lib
- C:/MinGW/msys/1.0/home/Rodion/FFmpeg-binaries/lib/swscale.lib
Found SFML 2.0 in D:\Programming\C++LIB\SFML-2.0\include
Headers directories: D:\Programming\C++LIB\SFML-2.0\include include src C:/MinGW/msys/1.0/home/Rodion/sfe/deps/headers
Libraries directories: C:/MinGW/msys/1.0/home/Rodion/sfe/deps/windows-binaries;C:/MinGW/msys/1.0/home/Rodion/sfe/deps/windows-binaries/gcc
Configuring incomplete, errors occurred!
See also "C:/MinGW/msys/1.0/home/Rodion/CMakeFiles/CMakeOutput.log".
See also "C:/MinGW/msys/1.0/home/Rodion/CMakeFiles/CMakeError.log".
-
I don't know what produces the "errors" at the beginning of your log but
Could NOT find SFML (missing: SFML_GRAPHICS_LIBRARY SFML_WINDOW_LIBRARY
SFML_SYSTEM_LIBRARY SFML_AUDIO_LIBRARY)
is because you need to tell CMake where SFML is, by defining the SFML_ROOT variable in CMake. Set it to the path of the directory containing SFML's include and lib directories.
-
I don't know what produces the "errors" at the beginning of your log but
Could NOT find SFML (missing: SFML_GRAPHICS_LIBRARY SFML_WINDOW_LIBRARY
SFML_SYSTEM_LIBRARY SFML_AUDIO_LIBRARY)
is because you need to tell CMake where SFML is, by defining the SFML_ROOT variable in CMake. Set it to the path of the directory containing SFML's include and lib directories.
Thx, I fixed it
-
Does your "I fixed it" means you could fully build sfeMovie for Windows?
-
No, just when compiling fewer errors
-
I won't be able to help if you don't give more details. At the moment I've absolutely no idea of where you're stuck.
-
Hi. Today i have a progress. I created "Visual Studio 9 solution" with CMAKE. The problem was in the Visual Studio 2010, possible incompatibility. I also compiled sfeMovie, but i don't have success. After compilation, I got only "sfeMovie.dll". I tried to replace this dll in my project, after this my programm compiled successful, but return an error after start execution : "Point of entry to the procedure ?initialize@SoundStream@sf@@IAEXII@Z not found in DLL avformat-55.dll".
-
Why didn't you create a Visual Studio 2010 solution with CMake?
So from what I understand, you successfully built sfeMovie but you have errors in your project?
Can you describe exactly what you did to use sfeMovie in your own project?
-
Why didn't you create a Visual Studio 2010 solution with CMake?
Because during configuration for vs2010 in CMAKE, i got an error:
"Check for working C compiler using: Visual Studio 10 -- broken"
So from what I understand, you successfully built sfeMovie but you have errors in your project?
Can you describe exactly what you did to use sfeMovie in your own project?
If I understand correctly, your project comprise ffmpeg and other sources, but i compiled sfeMovie only. Rest parts causes errors during compilation.
Now I opened my working project (last successful build with memory leaks) and replaced sfeMovie.dll, after this my programm compiled successful, but return an error after start execution : "Point of entry to the procedure ?initialize@SoundStream@sf@@IAEXII@Z not found in DLL avformat-55.dll".
for more information:
Additional Include Derictories:
D:\Programming\C++LIB\sfeMovie\include;
D:\Programming\C++LIB\SFML-2.0\include;
Additional Library Derictories:
D:\Programming\C++LIB\sfeMovie\lib;
D:\Programming\C++LIB\SFML-2.0\lib;
Additional Dependencies:
"sfml-graphics.lib"
"sfml-window.lib"
"sfml-system.lib"
"sfml-audio.lib"
"sfeMovie.lib"
Screenshot:
http://5.firepic.org/5/images/2013-11/19/jf5mgqtyo693.jpg
-
Because during configuration for vs2010 in CMAKE, i got an error:
"Check for working C compiler using: Visual Studio 10 -- broken"
Unless you wish to work with VS 2008, you should fix that issue. There is absolutely no warranty that libraries built with VS 2008 will work with VS 2010. After some searches I've found this:
I know this is really old.. but in case someone else has this problem, the solution for me was to install service pack 1 for visual studio 2010
If I understand correctly, your project comprise ffmpeg and other sources, but i compiled sfeMovie only. Rest parts causes errors during compilation.
What do you exactly mean with "Rest parts causes errors during compilation."? Can you tell me what are these errors?
And you're right about the project, there are sfeMovie sources (a few files) and FFmpeg sources. But it's not possible to successfully build sfeMovie if FFmpeg's compilation failed (unless you provided your own FFmpeg binaries), so I suppose everything went fine as you could build sfeMovie's dll.
Now, opened my working project (last succeful build with memory leaks) and replaced sfeMovie.dll, after this my programm compiled successful, but return an error after start execution : "Point of entry to the procedure ?initialize@SoundStream@sf@@IAEXII@Z not found in DLL avformat-55.dll".
for more information:
Additional Include Derictories:
D:\Programming\C++LIB\sfeMovie\include;
D:\Programming\C++LIB\SFML-2.0\include;
Additional Library Derictories:
D:\Programming\C++LIB\sfeMovie\lib;
D:\Programming\C++LIB\SFML-2.0\lib;
Additional Dependencies Derictories:
"sfml-graphics.lib"
"sfml-window.lib"
"sfml-system.lib"
"sfml-audio.lib"
"sfeMovie.lib"
That's looks fine to me, but you also need to copy some DLLs for you application to run. Namely:
sfml-graphics-2.dll
sfml-window-2.dll
sfml-audio-2.dll
sfml-system-2.dll
sfeMovie.dll
avcodec-54.dll
avdevice-54.dll
avfilter-3.dll
avformat-54.dll
avutil-52.dll
swscale-2.dll
libsndfile-1.dll
openal32.dll
At the moment sfeMovie can't be statically linked against SFML, and for technical reasons, FFmpeg libraries cannot be statically linked to sfeMovie with Visual Studio, so there're quite a few DLLs ;D .
-
Hi. I so far can't build sfeMovie :(. I recorded video while building:
https://www.youtube.com/watch?v=k2B0ZPsU9DU
Building log:
1>------ Rebuild All started: Project: FFmpeg, Configuration: Release Win32 ------
1>Build started 11/26/2013 10:59:38.
1>_PrepareForClean:
1> Deleting file "Win32\Release\FFmpeg\FFmpeg.lastbuildstate".
1>InitializeBuildStatus:
1> Touching "Win32\Release\FFmpeg\FFmpeg.unsuccessfulbuild".
1>CustomBuild:
1> Building Custom Rule C:/MinGW/msys/1.0/home/Rodion/sfe/CMakeLists.txt
1> CMake does not need to re-run because D:\Programming\C++LIB\SFE_3\CMakeFiles\generate.stamp is up-to-date.
1> Generating FFmpeg-binaries/lib/avformat.lib, FFmpeg-binaries/lib/avdevice.lib, FFmpeg-binaries/lib/avcodec.lib, FFmpeg-binaries/lib/avutil.lib, FFmpeg-binaries/lib/swscale.lib
1> Build directory : D:/Programming/C++LIB/SFE_3
1> OS : windows
1> Visual Studio : 1
1> OS X arch : notosx
1> Decoders : theora flac vorbis vp8
1> FFmpeg sources found, skipping archive extraction
1> /tmp/ffmpeg/configure --enable-shared --disable-static --disable-ffmpeg --disable-ffplay --disable-ffprobe --disable-ffserver --disable-doc --disable-encoders --disable-decoders --disable-muxers --disable-yasm --enable-decoder=theora --enable-decoder=flac --enable-decoder=vorbis --enable-decoder=vp8 --enable-memalign-hack --enable-w32threads
1> install prefix /usr/local
1> source path /tmp/ffmpeg
1> C compiler gcc
1> ARCH x86 (generic)
1> big-endian no
1> runtime cpu detection yes
1> yasm no
1> MMX enabled yes
1> MMXEXT enabled yes
1> 3DNow! enabled yes
1> 3DNow! extended enabled yes
1> SSE enabled yes
1> SSSE3 enabled yes
1> AVX enabled yes
1> FMA4 enabled yes
1> CMOV enabled no
1> CMOV is fast no
1> EBX available yes
1> EBP available no
1> debug symbols yes
1> strip symbols yes
1> optimize for size no
1> optimizations yes
1> static no
1> shared yes
1> postprocessing support no
1> new filter support yes
1> network support yes
1> threading support w32threads
1> safe bitstream reader yes
1> SDL support no
1> libdxva2 enabled no
1> libva enabled no
1> libvdpau enabled no
1> AVISynth enabled no
1> frei0r enabled no
1> gnutls enabled no
1> libaacplus enabled no
1> libass enabled no
1> libcaca enabled no
1> libcdio support no
1> libcelt enabled no
1> libdc1394 support no
1> libfaac enabled no
1> libfdk-aac enabled no
1> libgsm enabled no
1> libiec61883 support no
1> libilbc enabled no
1> libmodplug enabled no
1> libmp3lame enabled no
1> libnut enabled no
1> libopencore-amrnb support no
1> libopencore-amrwb support no
1> libopencv support no
1> libopenjpeg enabled no
1> libopus enabled no
1> libpulse enabled no
1> librtmp enabled no
1> libschroedinger enabled no
1> libspeex enabled no
1> libstagefright-h264 enabled no
1> libtheora enabled no
1> libtwolame enabled no
1> libutvideo enabled no
1> libv4l2 enabled no
1> libvo-aacenc support no
1> libvo-amrwbenc support no
1> libvorbis enabled no
1> libvpx enabled no
1> libx264 enabled no
1> libxavs enabled no
1> libxvid enabled no
1> openal enabled no
1> openssl enabled no
1> zlib enabled no
1> bzlib enabled no
1> texi2html enabled no
1> perl enabled yes
1> pod2man enabled yes
1> makeinfo enabled yes
1>
1> Enabled decoders:
1> flac vorbis vp8
1> theora vp3
1>
1> Enabled encoders:
1>
1> Enabled hwaccels:
1>
1> Enabled parsers:
1> aac dvbsub mpegaudio
1> aac_latm dvdsub mpegvideo
1> ac3 flac png
1> adx gsm pnm
1> bmp h261 rv30
1> cavsvideo h263 rv40
1> cook h264 vc1
1> dca mjpeg vorbis
1> dirac mlp vp3
1> dnxhd mpeg4video vp8
1>
1> Enabled demuxers:
1> aac image2 pcm_u32le
1> ac3 image2pipe pcm_u8
1> act ingenient pmp
1> adf ipmovie pva
1> adx iss qcp
1> aea iv8 r3d
1> aiff ivf rawvideo
1> amr jacosub realtext
1> anm jv rl2
1> apc latm rm
1> ape lmlm4 roq
1> asf loas rpl
1> ass lxf rso
1> au m4v rtp
1> avi matroska rtsp
1> avs mgsts sami
1> bethsoftvid microdvd sap
1> bfi mjpeg sbg
1> bink mlp sdp
1> bintext mm segafilm
1> bit mmf shorten
1> bmv mov siff
1> c93 mp3 smacker
1> caf mpc smjpeg
1> cavsvideo mpc8 smush
1> cdg mpegps sol
1> cdxl mpegts sox
1> daud mpegtsraw spdif
1> dfa mpegvideo srt
1> dirac msnwc_tcp str
1> dnxhd mtv subviewer
1> dsicin mvi swf
1> dts mxf thp
1> dv mxg tiertexseq
1> dxa nc tmv
1> ea nsv truehd
1> ea_cdata nut tta
1> eac3 nuv tty
1> ffm ogg txd
1> ffmetadata oma vc1
1> filmstrip paf vc1t
1> flac pcm_alaw vmd
1> flic pcm_f32be voc
1> flv pcm_f32le vqf
1> fourxm pcm_f64be w64
1> g722 pcm_f64le wav
1> g723_1 pcm_mulaw wc3
1> g729 pcm_s16be webvtt
1> gsm pcm_s16le wsaud
1> gxf pcm_s24be wsvqa
1> h261 pcm_s24le wtv
1> h263 pcm_s32be wv
1> h264 pcm_s32le xa
1> hls pcm_s8 xbin
1> ico pcm_u16be xmv
1> idcin pcm_u16le xwma
1> idf pcm_u24be yop
1> iff pcm_u24le yuv4mpegpipe
1> ilbc pcm_u32be
1>
1> Enabled muxers:
1>
1> Enabled protocols:
1> applehttp hls pipe
1> cache http rtmp
1> concat httpproxy rtmpt
1> crypto md5 rtp
1> ffrtmphttp mmsh tcp
1> file mmst udp
1> gopher
1>
1> Enabled filters:
1> aconvert crop pan
1> aevalsrc deshake pixdesctest
1> afifo drawbox removelogo
1> aformat earwax rgbtestsrc
1> alphaextract edgedetect scale
1> alphamerge fade select
1> amerge fieldorder sendcmd
1> amix fifo setdar
1> amovie format setfield
1> anull fps setpts
1> anullsink framestep setsar
1> anullsrc gradfun settb
1> aresample hflip showinfo
1> asendcmd hue showwaves
1> asetnsamples idet silencedetect
1> asetpts join slicify
1> asettb life smptebars
1> ashowinfo lut split
1> asink lutrgb swapuv
1> asink lutyuv testsrc
1> asplit mandelbrot thumbnail
1> astreamsync movie tile
1> bbox negate transpose
1> blackdetect noformat unsharp
1> cellauto null vflip
1> channelmap nullsink volume
1> channelsplit nullsrc volumedetect
1> color overlay vsink
1> concat pad vsink
1> copy
1>
1> Enabled bsfs:
1> aac_adtstoasc mjpeg2jpeg mp3_header_decompress
1> chomp mjpega_dump_header noise
1> dump_extradata mov2textsub remove_extradata
1> h264_mp4toannexb mp3_header_compress text2movsub
1> imx_dump_header
1>
1> Enabled indevs:
1> lavfi oss vfwcap
1>
1> Enabled outdevs:
1> oss
1>
1> License: LGPL version 2.1 or later
1> Creating config.mak and config.h...
1> config.h is unchanged
1> libavutil/avconfig.h is unchanged
1>
1>CUSTOMBUILD : warning : pkg-config not found, library detection may fail.
1> CC libavdevice/lavfi.o
1> CC libavdevice/oss_audio.o
1> CC libavdevice/avdevice.o
1> In file included from /tmp/ffmpeg/libavutil/avutil.h:274,
1> from /tmp/ffmpeg/libavutil/log.h:25,
1> from /tmp/ffmpeg/libavdevice/lavfi.c:30:
1> /tmp/ffmpeg/libavutil/common.h:31:22: inttypes.h: No such file or directory
1> CC libavdevice/alldevices.o
1> In file included from /tmp/ffmpeg/libavutil/avutil.h:274,
1> from /tmp/ffmpeg/libavutil/log.h:25,
1> from /tmp/ffmpeg/libavdevice/lavfi.c:30:
1> /tmp/ffmpeg/libavutil/common.h:65: error: parse error before "ff_log2_tab"
1> /tmp/ffmpeg/libavutil/common.h:65: warning: type defaults to `int' in declaration of `ff_log2_tab'
1> /tmp/ffmpeg/libavutil/common.h:65: warning: data definition has no type or storage class
1> /tmp/ffmpeg/libavutil/common.h:70: error: parse error before "av_reverse"
1> /tmp/ffmpeg/libavutil/common.h:70: warning: type defaults to `int' in declaration of `av_reverse'
1> /tmp/ffmpeg/libavutil/common.h:70: warning: data definition has no type or storage class
1> In file included from /tmp/ffmpeg/libavutil/common.h:102,
1> from /tmp/ffmpeg/libavutil/avutil.h:274,
1> from /tmp/ffmpeg/libavutil/log.h:25,
1> from /tmp/ffmpeg/libavdevice/lavfi.c:30:
1> /tmp/ffmpeg/libavutil/intmath.h:24:20: stdint.h: No such file or directory
1> In file included from /tmp/ffmpeg/libavutil/common.h:102,
1> from /tmp/ffmpeg/libavutil/avutil.h:274,
1> from /tmp/ffmpeg/libavutil/log.h:25,
1> from /tmp/ffmpeg/libavdevice/lavfi.c:30:
1> /tmp/ffmpeg/libavutil/intmath.h:33: error: parse error before "ff_inverse"
1> /tmp/ffmpeg/libavutil/intmath.h:33: warning: type defaults to `int' in declaration of `ff_inverse'
1> /tmp/ffmpeg/libavutil/intmath.h:33: warning: data definition has no type or storage class
1> /tmp/ffmpeg/libavdevice/oss_audio.c:25:20: stdint.h: No such file or directory
1> In file included from /tmp/ffmpeg/libavutil/common.h:102,
1> from /tmp/ffmpeg/libavutil/avutil.h:274,
1> from /tmp/ffmpeg/libavutil/log.h:25,
1> from /tmp/ffmpeg/libavdevice/lavfi.c:30:
1> /tmp/ffmpeg/libavutil/intmath.h:58: error: parse error before "ff_sqrt_tab"
1> /tmp/ffmpeg/libavutil/intmath.h:58: warning: type defaults to `int' in declaration of `ff_sqrt_tab'
1> /tmp/ffmpeg/libavutil/intmath.h:58: warning: data definition has no type or storage class
1> In file included from /tmp/ffmpeg/libavutil/avutil.h:274,
1> from /tmp/ffmpeg/libavutil/log.h:25,
1> from /tmp/ffmpeg/libavdevice/lavfi.c:30:
1> /tmp/ffmpeg/libavutil/common.h:127: error: parse error before "av_clip_uint8_c"
1> /tmp/ffmpeg/libavutil/common.h:128: warning: return type defaults to `int'
1> /tmp/ffmpeg/libavutil/common.h:128: warning: no previous prototype for 'av_clip_uint8_c'
1> /tmp/ffmpeg/libavutil/common.h:138: error: parse error before "av_clip_int8_c"
1> /tmp/ffmpeg/libavutil/common.h:139: warning: return type defaults to `int'
1> /tmp/ffmpeg/libavutil/common.h:139: warning: no previous prototype for 'av_clip_int8_c'
1> /tmp/ffmpeg/libavutil/common.h:149: error: parse error before "av_clip_uint16_c"
1> /tmp/ffmpeg/libavutil/common.h:150: warning: return type defaults to `int'
1> /tmp/ffmpeg/libavutil/common.h:150: warning: no previous prototype for 'av_clip_uint16_c'
1> /tmp/ffmpeg/libavutil/common.h:160: error: parse error before "av_clip_int16_c"
1> /tmp/ffmpeg/libavutil/common.h:161: warning: return type defaults to `int'
1> /tmp/ffmpeg/libavutil/common.h:161: warning: no previous prototype for 'av_clip_int16_c'
1> /tmp/ffmpeg/libavutil/common.h:171: error: parse error before "av_clipl_int32_c"
1> /tmp/ffmpeg/libavutil/common.h:171: error: parse error before "a"
1> /tmp/ffmpeg/libavutil/common.h:172: warning: return type defaults to `int'
1> /tmp/ffmpeg/libavutil/common.h:172: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavutil/common.h: In function `av_clipl_int32_c':
1> /tmp/ffmpeg/libavutil/common.h:173: error: `a' undeclared (first use in this function)
1> /tmp/ffmpeg/libavutil/common.h:173: error: (Each undeclared identifier is reported only once
1> /tmp/ffmpeg/libavutil/common.h:173: error: for each function it appears in.)
1> /tmp/ffmpeg/libavutil/common.h:173: warning: implicit declaration of function `UINT64_C'
1> /tmp/ffmpeg/libavutil/common.h:174: error: `int32_t' undeclared (first use in this function)
1> /tmp/ffmpeg/libavutil/common.h:174: error: parse error before "a"
1> /tmp/ffmpeg/libavutil/common.h: In function `av_sat_add32_c':
1> /tmp/ffmpeg/libavutil/common.h:198: error: `int64_t' undeclared (first use in this function)
1> /tmp/ffmpeg/libavutil/common.h:198: error: parse error before "a"
1> /tmp/ffmpeg/libavutil/common.h:199: warning: no return statement in function returning non-void
1> /tmp/ffmpeg/libavutil/common.h: At top level:
1> /tmp/ffmpeg/libavutil/common.h:241: error: parse error before "x"
1> /tmp/ffmpeg/libavutil/common.h:242: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavutil/common.h: In function `av_popcount_c':
1> /tmp/ffmpeg/libavutil/common.h:243: error: `x' undeclared (first use in this function)
1> /tmp/ffmpeg/libavutil/common.h: At top level:
1> /tmp/ffmpeg/libavutil/common.h:255: error: parse error before "x"
1> /tmp/ffmpeg/libavutil/common.h:256: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavutil/common.h: In function `av_popcount64_c':
1> /tmp/ffmpeg/libavutil/common.h:257: error: `uint32_t' undeclared (first use in this function)
1> /tmp/ffmpeg/libavutil/common.h:257: error: parse error before "x"
1> /tmp/ffmpeg/libavutil/common.h:258: warning: no return statement in function returning non-void
1> In file included from /tmp/ffmpeg/libavutil/avutil.h:274,
1> from /tmp/ffmpeg/libavutil/log.h:25,
1> from /tmp/ffmpeg/libavdevice/oss_audio.c:37:
1> /tmp/ffmpeg/libavutil/common.h:31:22: inttypes.h: No such file or directory
1> In file included from /tmp/ffmpeg/libavutil/avutil.h:274,
1> from /tmp/ffmpeg/libavutil/log.h:25,
1> from /tmp/ffmpeg/libavdevice/oss_audio.c:37:
1> /tmp/ffmpeg/libavutil/common.h:65: error: parse error before "ff_log2_tab"
1> /tmp/ffmpeg/libavutil/common.h:65: warning: type defaults to `int' in declaration of `ff_log2_tab'
1> /tmp/ffmpeg/libavutil/common.h:65: warning: data definition has no type or storage class
1> /tmp/ffmpeg/libavutil/common.h:70: error: parse error before "av_reverse"
1> /tmp/ffmpeg/libavutil/common.h:70: warning: type defaults to `int' in declaration of `av_reverse'
1> /tmp/ffmpeg/libavutil/common.h:70: warning: data definition has no type or storage class
1> In file included from /tmp/ffmpeg/libavutil/common.h:102,
1> from /tmp/ffmpeg/libavutil/avutil.h:274,
1> from /tmp/ffmpeg/libavutil/log.h:25,
1> from /tmp/ffmpeg/libavdevice/oss_audio.c:37:
1> /tmp/ffmpeg/libavutil/intmath.h:33: error: parse error before "ff_inverse"
1> /tmp/ffmpeg/libavutil/intmath.h:33: warning: type defaults to `int' in declaration of `ff_inverse'
1> /tmp/ffmpeg/libavutil/intmath.h:33: warning: data definition has no type or storage class
1> In file included from /tmp/ffmpeg/libavutil/common.h:102,
1> from /tmp/ffmpeg/libavutil/avutil.h:274,
1> from /tmp/ffmpeg/libavutil/log.h:25,
1> from /tmp/ffmpeg/libavdevice/oss_audio.c:37:
1> /tmp/ffmpeg/libavutil/intmath.h:58: error: parse error before "ff_sqrt_tab"
1> /tmp/ffmpeg/libavutil/intmath.h:58: warning: type defaults to `int' in declaration of `ff_sqrt_tab'
1> /tmp/ffmpeg/libavutil/intmath.h:58: warning: data definition has no type or storage class
1> In file included from /tmp/ffmpeg/libavutil/avutil.h:274,
1> from /tmp/ffmpeg/libavutil/log.h:25,
1> from /tmp/ffmpeg/libavdevice/oss_audio.c:37:
1> /tmp/ffmpeg/libavutil/common.h:127: error: parse error before "av_clip_uint8_c"
1> /tmp/ffmpeg/libavutil/common.h:128: warning: return type defaults to `int'
1> /tmp/ffmpeg/libavutil/common.h:128: warning: no previous prototype for 'av_clip_uint8_c'
1> /tmp/ffmpeg/libavutil/common.h:149: error: parse error before "av_clip_uint16_c"
1> /tmp/ffmpeg/libavutil/common.h:150: warning: return type defaults to `int'
1> /tmp/ffmpeg/libavutil/common.h:150: warning: no previous prototype for 'av_clip_uint16_c'
1> /tmp/ffmpeg/libavutil/common.h: In function `av_clipl_int32_c':
1> /tmp/ffmpeg/libavutil/common.h:173: warning: implicit declaration of function `UINT64_C'
1> /tmp/ffmpeg/libavutil/common.h: At top level:
1> /tmp/ffmpeg/libavutil/common.h:241: error: parse error before "x"
1> /tmp/ffmpeg/libavutil/common.h:242: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavutil/common.h: In function `av_popcount_c':
1> /tmp/ffmpeg/libavutil/common.h:243: error: `x' undeclared (first use in this function)
1> /tmp/ffmpeg/libavutil/common.h:243: error: (Each undeclared identifier is reported only once
1> /tmp/ffmpeg/libavutil/common.h:243: error: for each function it appears in.)
1> /tmp/ffmpeg/libavutil/common.h: At top level:
1> /tmp/ffmpeg/libavutil/common.h:255: error: parse error before "x"
1> /tmp/ffmpeg/libavutil/common.h:256: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavutil/common.h: In function `av_popcount64_c':
1> /tmp/ffmpeg/libavutil/common.h:257: error: `uint32_t' undeclared (first use in this function)
1> /tmp/ffmpeg/libavutil/common.h:257: error: parse error before "x"
1> /tmp/ffmpeg/libavutil/common.h:258: warning: no return statement in function returning non-void
1> In file included from /tmp/ffmpeg/libavutil/timer.h:42,
1> from /tmp/ffmpeg/libavutil/internal.h:39,
1> from /tmp/ffmpeg/libavutil/common.h:379,
1> from /tmp/ffmpeg/libavutil/avutil.h:274,
1> from /tmp/ffmpeg/libavutil/log.h:25,
1> from /tmp/ffmpeg/libavdevice/oss_audio.c:37:
1> /tmp/ffmpeg/libavutil/x86/timer.h: At top level:
1> /tmp/ffmpeg/libavutil/x86/timer.h:30: error: parse error before "read_time"
1> /tmp/ffmpeg/libavutil/x86/timer.h:31: warning: return type defaults to `int'
1> /tmp/ffmpeg/libavutil/x86/timer.h:31: warning: no previous prototype for 'read_time'
1> /tmp/ffmpeg/libavutil/x86/timer.h: In function `read_time':
1> /tmp/ffmpeg/libavutil/x86/timer.h:32: error: `uint32_t' undeclared (first use in this function)
1> /tmp/ffmpeg/libavutil/x86/timer.h:32: error: parse error before "a"
1> In file included from /tmp/ffmpeg/libavutil/timer.h:42,
1> from /tmp/ffmpeg/libavutil/internal.h:39,
1> from /tmp/ffmpeg/libavutil/common.h:379,
1> from /tmp/ffmpeg/libavutil/avutil.h:274,
1> from /tmp/ffmpeg/libavutil/log.h:25,
1> from /tmp/ffmpeg/libavdevice/lavfi.c:30:
1> /tmp/ffmpeg/libavutil/x86/timer.h: At top level:/tmp/ffmpeg/libavutil/x86/timer.h:33: error: `a' undeclared (first use in this function)
1>
1> /tmp/ffmpeg/libavutil/x86/timer.h:30: error: parse error before "read_time"
1> /tmp/ffmpeg/libavutil/x86/timer.h:33: error: `d' undeclared (first use in this function)
1> /tmp/ffmpeg/libavutil/x86/timer.h:34: error: `uint64_t' undeclared (first use in this function)
1> /tmp/ffmpeg/libavutil/x86/timer.h:34: error: parse error before "d"
1> /tmp/ffmpeg/libavutil/x86/timer.h:31: warning: return type defaults to `int'
1> /tmp/ffmpeg/libavutil/x86/timer.h:31: warning: no previous prototype for 'read_time'
1> /tmp/ffmpeg/libavutil/x86/timer.h: In function `read_time':
1> /tmp/ffmpeg/libavutil/x86/timer.h:32: error: `uint32_t' undeclared (first use in this function)
1> /tmp/ffmpeg/libavutil/x86/timer.h:32: error: parse error before "a"
1> /tmp/ffmpeg/libavutil/x86/timer.h:33: error: `d' undeclared (first use in this function)
1> /tmp/ffmpeg/libavutil/x86/timer.h:34: error: `uint64_t' undeclared (first use in this function)
1> /tmp/ffmpeg/libavutil/x86/timer.h:34: error: parse error before "d"
1> In file included from /tmp/ffmpeg/libavutil/libm.h:30,
1> from /tmp/ffmpeg/libavutil/internal.h:109,
1> from /tmp/ffmpeg/libavutil/common.h:379,
1> from /tmp/ffmpeg/libavutil/avutil.h:274,
1> from /tmp/ffmpeg/libavutil/log.h:25,
1> from /tmp/ffmpeg/libavdevice/oss_audio.c:37:
1> /tmp/ffmpeg/libavutil/intfloat.h: At top level:
1> /tmp/ffmpeg/libavutil/intfloat.h:28: error: parse error before "uint32_t"
1> /tmp/ffmpeg/libavutil/intfloat.h:28: warning: no semicolon at end of struct or union
1> /tmp/ffmpeg/libavutil/intfloat.h:30: error: parse error before '}' token
1> /tmp/ffmpeg/libavutil/intfloat.h:33: error: parse error before "uint64_t"
1> /tmp/ffmpeg/libavutil/intfloat.h:33: warning: no semicolon at end of struct or union
1> /tmp/ffmpeg/libavutil/intfloat.h:34: error: conflicting types for 'f'
1> /tmp/ffmpeg/libavutil/intfloat.h:29: error: previous declaration of 'f' was here
1> /tmp/ffmpeg/libavutil/intfloat.h:35: error: parse error before '}' token
1> /tmp/ffmpeg/libavutil/intfloat.h:40: error: parse error before "i"
1> /tmp/ffmpeg/libavutil/intfloat.h:41: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavutil/intfloat.h: In function `av_int2float':
1> /tmp/ffmpeg/libavutil/intfloat.h:42: error: storage size of 'v' isn't known
1> /tmp/ffmpeg/libavutil/intfloat.h:43: error: `i' undeclared (first use in this function)
1> /tmp/ffmpeg/libavutil/intfloat.h:42: warning: unused variable `v'
1> /tmp/ffmpeg/libavutil/intfloat.h: At top level:
1> /tmp/ffmpeg/libavutil/intfloat.h:50: error: parse error before "av_float2int"
1> /tmp/ffmpeg/libavutil/intfloat.h:51: warning: return type defaults to `int'
1> /tmp/ffmpeg/libavutil/intfloat.h:51: warning: no previous prototype for 'av_float2int'
1> /tmp/ffmpeg/libavutil/intfloat.h: In function `av_float2int':
1> /tmp/ffmpeg/libavutil/intfloat.h:52: error: storage size of 'v' isn't known
1> /tmp/ffmpeg/libavutil/intfloat.h:52: warning: unused variable `v'
1> /tmp/ffmpeg/libavutil/intfloat.h: At top level:
1> /tmp/ffmpeg/libavutil/intfloat.h:60: error: parse error before "i"
1> /tmp/ffmpeg/libavutil/intfloat.h:61: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavutil/intfloat.h: In function `av_int2double':
1> /tmp/ffmpeg/libavutil/intfloat.h:62: error: storage size of 'v' isn't known
1> /tmp/ffmpeg/libavutil/intfloat.h:63: error: `i' undeclared (first use in this function)
1> /tmp/ffmpeg/libavutil/intfloat.h:62: warning: unused variable `v'
1> /tmp/ffmpeg/libavutil/intfloat.h: At top level:
1> /tmp/ffmpeg/libavutil/intfloat.h:70: error: parse error before "av_double2int"
1> /tmp/ffmpeg/libavutil/intfloat.h:71: warning: return type defaults to `int'
1> /tmp/ffmpeg/libavutil/intfloat.h:71: warning: no previous prototype for 'av_double2int'
1> /tmp/ffmpeg/libavutil/intfloat.h: In function `av_double2int':
1> /tmp/ffmpeg/libavutil/intfloat.h:72: error: storage size of 'v' isn't known
1> /tmp/ffmpeg/libavutil/intfloat.h:72: warning: unused variable `v'
1> In file included from /tmp/ffmpeg/libavutil/libm.h:30,
1> from /tmp/ffmpeg/libavutil/internal.h:109,
1> from /tmp/ffmpeg/libavutil/common.h:379,
1> from /tmp/ffmpeg/libavutil/avutil.h:274,
1> from /tmp/ffmpeg/libavutil/log.h:25,
1> from /tmp/ffmpeg/libavdevice/lavfi.c:30:
1> /tmp/ffmpeg/libavutil/intfloat.h: At top level:
1> /tmp/ffmpeg/libavutil/intfloat.h:28: error: parse error before "uint32_t"
1> /tmp/ffmpeg/libavutil/intfloat.h:28: warning: no semicolon at end of struct or union
1> /tmp/ffmpeg/libavutil/intfloat.h:29: confused by earlier errors, bailing out
1> In file included from /tmp/ffmpeg/libavutil/avutil.h:277,
1> from /tmp/ffmpeg/libavutil/log.h:25,
1> from /tmp/ffmpeg/libavdevice/oss_audio.c:37:
1> /tmp/ffmpeg/libavutil/mathematics.h: At top level:
1> /tmp/ffmpeg/libavutil/mathematics.h:123: error: parse error before "a"
1> /tmp/ffmpeg/libavutil/mathematics.h:123: warning: function declaration isn't a prototype
1> In file included from /tmp/ffmpeg/libavutil/avutil.h:279,
1> from /tmp/ffmpeg/libavutil/log.h:25,
1> from /tmp/ffmpeg/libavdevice/oss_audio.c:37:
1> /tmp/ffmpeg/libavutil/intfloat_readwrite.h:29: error: parse error before "uint8_t"
1> /tmp/ffmpeg/libavutil/intfloat_readwrite.h:29: warning: no semicolon at end of struct or union
1> /tmp/ffmpeg/libavutil/intfloat_readwrite.h:30: warning: type defaults to `int' in declaration of `mantissa'
1> /tmp/ffmpeg/libavutil/intfloat_readwrite.h:30: warning: data definition has no type or storage class
1> /tmp/ffmpeg/libavutil/intfloat_readwrite.h:31: error: parse error before '}' token
1> /tmp/ffmpeg/libavutil/intfloat_readwrite.h:31: warning: type defaults to `int' in declaration of `AVExtFloat'
1> /tmp/ffmpeg/libavutil/intfloat_readwrite.h:31: warning: data definition has no type or storage class
1> /tmp/ffmpeg/libavutil/intfloat_readwrite.h:35: warning: type defaults to `int' in declaration of `AVExtFloat'
1> /tmp/ffmpeg/libavutil/intfloat_readwrite.h:35: error: parse error before "ext"
1> /tmp/ffmpeg/libavutil/intfloat_readwrite.h:35: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavutil/intfloat_readwrite.h:38: error: parse error before "av_dbl2ext"
1> /tmp/ffmpeg/libavutil/intfloat_readwrite.h:38: warning: type defaults to `int' in declaration of `av_dbl2ext'
1> /tmp/ffmpeg/libavutil/intfloat_readwrite.h:38: warning: data definition has no type or storage class
1> In file included from /tmp/ffmpeg/libavutil/log.h:25,
1> from /tmp/ffmpeg/libavdevice/oss_audio.c:37:
1> /tmp/ffmpeg/libavutil/avutil.h: In function `av_x_if_null':
1> /tmp/ffmpeg/libavutil/avutil.h:288: error: `intptr_t' undeclared (first use in this function)
1> In file included from /tmp/ffmpeg/libavdevice/oss_audio.c:38:
1> /tmp/ffmpeg/libavutil/opt.h: At top level:
1> /tmp/ffmpeg/libavutil/opt.h:567: warning: type defaults to `int' in declaration of `uint8_t'
1> /tmp/ffmpeg/libavutil/opt.h:567: error: parse error before '*' token
1> /tmp/ffmpeg/libavutil/opt.h:567: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavutil/opt.h:587: error: parse error before "uint8_t"
1> /tmp/ffmpeg/libavutil/opt.h:587: warning: function declaration isn't a prototype
1> In file included from /tmp/ffmpeg/libavcodec/avcodec.h:30,
1> from /tmp/ffmpeg/libavdevice/oss_audio.c:40:
1> /tmp/ffmpeg/libavutil/samplefmt.h:188: error: parse error before '*' token
1> /tmp/ffmpeg/libavutil/samplefmt.h:191: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavutil/samplefmt.h:209: error: parse error before '*' token
1> /tmp/ffmpeg/libavutil/samplefmt.h:210: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavutil/samplefmt.h:223: error: parse error before '*' token
1> /tmp/ffmpeg/libavutil/samplefmt.h:225: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavutil/samplefmt.h:236: error: parse error before '*' token
1> /tmp/ffmpeg/libavutil/samplefmt.h:237: warning: function declaration isn't a prototype
1> In file included from /tmp/ffmpeg/libavcodec/avcodec.h:37,
1> from /tmp/ffmpeg/libavdevice/oss_audio.c:40:
1> /tmp/ffmpeg/libavutil/audioconvert.h:133: error: parse error before "av_get_channel_layout"
1> /tmp/ffmpeg/libavutil/audioconvert.h:133: warning: type defaults to `int' in declaration of `av_get_channel_layout'
1> /tmp/ffmpeg/libavutil/audioconvert.h:133: warning: data definition has no type or storage class
1> /tmp/ffmpeg/libavutil/audioconvert.h:142: error: parse error before "uint64_t"
1> /tmp/ffmpeg/libavutil/audioconvert.h:142: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavutil/audioconvert.h:148: error: parse error before "uint64_t"
1> /tmp/ffmpeg/libavutil/audioconvert.h:148: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavutil/audioconvert.h:153: error: parse error before "channel_layout"
1> /tmp/ffmpeg/libavutil/audioconvert.h:153: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavutil/audioconvert.h:169: error: parse error before "channel_layout"
1> /tmp/ffmpeg/libavutil/audioconvert.h:170: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavutil/audioconvert.h:175: error: parse error before "av_channel_layout_extract_channel"
1> /tmp/ffmpeg/libavutil/audioconvert.h:175: error: parse error before "channel_layout"
1> /tmp/ffmpeg/libavutil/audioconvert.h:175: warning: type defaults to `int' in declaration of `av_channel_layout_extract_channel'
1> /tmp/ffmpeg/libavutil/audioconvert.h:175: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavutil/audioconvert.h:175: warning: data definition has no type or storage class
1> /tmp/ffmpeg/libavutil/audioconvert.h:182: error: parse error before "channel"
1> /tmp/ffmpeg/libavutil/audioconvert.h:182: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavutil/audioconvert.h:190: error: parse error before "channel"
1> /tmp/ffmpeg/libavutil/audioconvert.h:190: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavutil/audioconvert.h:201: error: parse error before "uint64_t"
1> /tmp/ffmpeg/libavutil/audioconvert.h:202: warning: function declaration isn't a prototype
1> In file included from /tmp/ffmpeg/libavdevice/oss_audio.c:40:
1> /tmp/ffmpeg/libavcodec/avcodec.h:960: error: parse error before "uint8_t"
1> /tmp/ffmpeg/libavcodec/avcodec.h:960: warning: no semicolon at end of struct or union
1> /tmp/ffmpeg/libavcodec/avcodec.h:972: error: parse error before "uint8_t"
1> /tmp/ffmpeg/libavcodec/avcodec.h:972: warning: no semicolon at end of struct or union
1> /tmp/ffmpeg/libavcodec/avcodec.h:973: warning: redundant redeclaration of 'size'
1> /tmp/ffmpeg/libavcodec/avcodec.h:961: warning: previous declaration of 'size' was here
1> /tmp/ffmpeg/libavcodec/avcodec.h:975: error: parse error before '}' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:975: warning: type defaults to `int' in declaration of `side_data'
1> /tmp/ffmpeg/libavcodec/avcodec.h:975: warning: data definition has no type or storage class
1> /tmp/ffmpeg/libavcodec/avcodec.h:1005: error: parse error before '}' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:1005: warning: type defaults to `int' in declaration of `AVPacket'
1> /tmp/ffmpeg/libavcodec/avcodec.h:1005: warning: data definition has no type or storage class
1> /tmp/ffmpeg/libavcodec/avcodec.h:1037: error: parse error before "uint8_t"
1> /tmp/ffmpeg/libavcodec/avcodec.h:1037: warning: no semicolon at end of struct or union
1> /tmp/ffmpeg/libavcodec/avcodec.h:1068: error: parse error before '*' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:1068: warning: type defaults to `int' in declaration of `extended_data'
1> /tmp/ffmpeg/libavcodec/avcodec.h:1068: warning: data definition has no type or storage class
1> /tmp/ffmpeg/libavcodec/avcodec.h:1113: error: parse error before '*' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:1113: warning: type defaults to `int' in declaration of `base'
1> /tmp/ffmpeg/libavcodec/avcodec.h:1113: warning: data definition has no type or storage class
1> /tmp/ffmpeg/libavcodec/avcodec.h:1198: error: parse error before '*' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:1198: warning: type defaults to `int' in declaration of `mbskip_table'
1> /tmp/ffmpeg/libavcodec/avcodec.h:1198: warning: data definition has no type or storage class
1> /tmp/ffmpeg/libavcodec/avcodec.h:1220: error: parse error before '*' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:1220: warning: type defaults to `int' in declaration of `mb_type'
1> /tmp/ffmpeg/libavcodec/avcodec.h:1220: warning: data definition has no type or storage class
1> /tmp/ffmpeg/libavcodec/avcodec.h:1249: error: parse error before "error"
1> /tmp/ffmpeg/libavcodec/avcodec.h:1249: warning: type defaults to `int' in declaration of `error'
1> /tmp/ffmpeg/libavcodec/avcodec.h:1249: warning: data definition has no type or storage class
1> /tmp/ffmpeg/libavcodec/avcodec.h:1257: error: conflicting types for 'type'
1> /tmp/ffmpeg/libavcodec/avcodec.h:974: error: previous declaration of 'type' was here
1> /tmp/ffmpeg/libavcodec/avcodec.h:1342: error: parse error before "motion_subsample_log2"
1> /tmp/ffmpeg/libavcodec/avcodec.h:1342: warning: type defaults to `int' in declaration of `motion_subsample_log2'
1> /tmp/ffmpeg/libavcodec/avcodec.h:1342: warning: data definition has no type or storage class
1> /tmp/ffmpeg/libavcodec/avcodec.h:1358: error: parse error before "channel_layout"
1> /tmp/ffmpeg/libavcodec/avcodec.h:1358: warning: type defaults to `int' in declaration of `channel_layout'
1> /tmp/ffmpeg/libavcodec/avcodec.h:1358: warning: data definition has no type or storage class
1> /tmp/ffmpeg/libavcodec/avcodec.h:1418: error: parse error before '}' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:1418: warning: type defaults to `int' in declaration of `AVFrame'
1> /tmp/ffmpeg/libavcodec/avcodec.h:1418: warning: data definition has no type or storage class
1> /tmp/ffmpeg/libavcodec/avcodec.h:1425: warning: type defaults to `int' in declaration of `AVFrame'
1> /tmp/ffmpeg/libavcodec/avcodec.h:1425: error: parse error before '*' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:1425: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavcodec/avcodec.h:1426: error: parse error before '*' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:1426: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavcodec/avcodec.h:1427: warning: type defaults to `int' in declaration of `AVFrame'
1> /tmp/ffmpeg/libavcodec/avcodec.h:1427: error: parse error before '*' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:1427: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavcodec/avcodec.h:1428: error: parse error before '*' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:1428: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavcodec/avcodec.h:1429: warning: type defaults to `int' in declaration of `AVFrame'
1> /tmp/ffmpeg/libavcodec/avcodec.h:1429: error: parse error before '*' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:1429: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavcodec/avcodec.h:1430: error: parse error before '*' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:1430: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavcodec/avcodec.h:1431: warning: type defaults to `int' in declaration of `AVFrame'
1> /tmp/ffmpeg/libavcodec/avcodec.h:1431: error: parse error before '*' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:1431: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavcodec/avcodec.h:1432: error: parse error before '*' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:1432: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavcodec/avcodec.h:1433: warning: type defaults to `int' in declaration of `AVFrame'
1> /tmp/ffmpeg/libavcodec/avcodec.h:1433: error: parse error before '*' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:1433: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavcodec/avcodec.h:1434: error: parse error before '*' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:1434: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavcodec/avcodec.h:1435: warning: type defaults to `int' in declaration of `AVFrame'
1> /tmp/ffmpeg/libavcodec/avcodec.h:1435: error: parse error before '*' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:1435: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavcodec/avcodec.h:1436: error: parse error before '*' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:1436: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavcodec/avcodec.h:1437: warning: type defaults to `int' in declaration of `AVFrame'
1> /tmp/ffmpeg/libavcodec/avcodec.h:1437: error: parse error before '*' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:1437: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavcodec/avcodec.h:1438: error: parse error before '*' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:1438: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavcodec/avcodec.h:1439: warning: type defaults to `int' in declaration of `AVFrame'
1> /tmp/ffmpeg/libavcodec/avcodec.h:1439: error: parse error before '*' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:1439: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavcodec/avcodec.h:1440: error: parse error before '*' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:1440: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavcodec/avcodec.h:1577: error: parse error before "uint8_t"
1> /tmp/ffmpeg/libavcodec/avcodec.h:1577: warning: no semicolon at end of struct or union
1> /tmp/ffmpeg/libavcodec/avcodec.h:1631: warning: redundant redeclaration of 'width'
1> /tmp/ffmpeg/libavcodec/avcodec.h:1075: warning: previous declaration of 'width' was here
1> /tmp/ffmpeg/libavcodec/avcodec.h:1631: warning: redundant redeclaration of 'height'
1> /tmp/ffmpeg/libavcodec/avcodec.h:1075: warning: previous declaration of 'height' was here
1> /tmp/ffmpeg/libavcodec/avcodec.h:1691: warning: type defaults to `int' in declaration of `AVFrame'
1> /tmp/ffmpeg/libavcodec/avcodec.h:1691: error: parse error before '*' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:1692: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavcodec/avcodec.h:1847: warning: redundant redeclaration of 'sample_aspect_ratio'
1> /tmp/ffmpeg/libavcodec/avcodec.h:1120: warning: previous declaration of 'sample_aspect_ratio' was here
1> /tmp/ffmpeg/libavcodec/avcodec.h:2015: error: parse error before '*' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:2015: warning: type defaults to `int' in declaration of `intra_matrix'
1> /tmp/ffmpeg/libavcodec/avcodec.h:2015: warning: data definition has no type or storage class
1> /tmp/ffmpeg/libavcodec/avcodec.h:2022: error: parse error before '*' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:2022: warning: type defaults to `int' in declaration of `inter_matrix'
1> /tmp/ffmpeg/libavcodec/avcodec.h:2022: warning: data definition has no type or storage class
1> /tmp/ffmpeg/libavcodec/avcodec.h:2227: warning: redundant redeclaration of 'sample_rate'
1> /tmp/ffmpeg/libavcodec/avcodec.h:1350: warning: previous declaration of 'sample_rate' was here
1> /tmp/ffmpeg/libavcodec/avcodec.h:2228: error: conflicting types for 'channels'
1> /tmp/ffmpeg/libavcodec/avcodec.h:1417: error: previous declaration of 'channels' was here
1> /tmp/ffmpeg/libavcodec/avcodec.h:2282: error: parse error before "channel_layout"
1> /tmp/ffmpeg/libavcodec/avcodec.h:2282: warning: type defaults to `int' in declaration of `channel_layout'
1> /tmp/ffmpeg/libavcodec/avcodec.h:2282: warning: redundant redeclaration of 'channel_layout'
1> /tmp/ffmpeg/libavcodec/avcodec.h:1358: warning: previous declaration of 'channel_layout' was here
1> /tmp/ffmpeg/libavcodec/avcodec.h:2282: warning: data definition has no type or storage class
1> /tmp/ffmpeg/libavcodec/avcodec.h:2289: error: parse error before "request_channel_layout"
1> /tmp/ffmpeg/libavcodec/avcodec.h:2289: warning: type defaults to `int' in declaration of `request_channel_layout'
1> /tmp/ffmpeg/libavcodec/avcodec.h:2289: warning: data definition has no type or storage class
1> /tmp/ffmpeg/libavcodec/avcodec.h:2361: error: parse error before "AVFrame"
1> /tmp/ffmpeg/libavcodec/avcodec.h:2361: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavcodec/avcodec.h:2372: error: parse error before "AVFrame"
1> /tmp/ffmpeg/libavcodec/avcodec.h:2372: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavcodec/avcodec.h:2386: error: parse error before "AVFrame"
1> /tmp/ffmpeg/libavcodec/avcodec.h:2386: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavcodec/avcodec.h:2733: warning: redundant redeclaration of 'reordered_opaque'
1> /tmp/ffmpeg/libavcodec/avcodec.h:1313: warning: previous declaration of 'reordered_opaque' was here
1> /tmp/ffmpeg/libavcodec/avcodec.h:2759: error: parse error before "error"
1> /tmp/ffmpeg/libavcodec/avcodec.h:2759: warning: type defaults to `int' in declaration of `error'
1> /tmp/ffmpeg/libavcodec/avcodec.h:2759: warning: redundant redeclaration of 'error'
1> /tmp/ffmpeg/libavcodec/avcodec.h:1249: warning: previous declaration of 'error' was here
1> /tmp/ffmpeg/libavcodec/avcodec.h:2759: warning: data definition has no type or storage class
1> /tmp/ffmpeg/libavcodec/avcodec.h:2839: error: parse error before '*' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:2839: warning: type defaults to `int' in declaration of `coded_frame'
1> /tmp/ffmpeg/libavcodec/avcodec.h:2839: warning: data definition has no type or storage class
1> /tmp/ffmpeg/libavcodec/avcodec.h:2915: warning: redundant redeclaration of 'thread_opaque'
1> /tmp/ffmpeg/libavcodec/avcodec.h:1334: warning: previous declaration of 'thread_opaque' was here
1> /tmp/ffmpeg/libavcodec/avcodec.h:3031: error: parse error before '*' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:3031: warning: type defaults to `int' in declaration of `subtitle_header'
1> /tmp/ffmpeg/libavcodec/avcodec.h:3031: warning: data definition has no type or storage class
1> /tmp/ffmpeg/libavcodec/avcodec.h:3048: error: parse error before '*' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:3048: warning: type defaults to `int' in declaration of `pkt'
1> /tmp/ffmpeg/libavcodec/avcodec.h:3048: warning: data definition has no type or storage class
1> /tmp/ffmpeg/libavcodec/avcodec.h:3056: error: parse error before "vbv_delay"
1> /tmp/ffmpeg/libavcodec/avcodec.h:3056: warning: type defaults to `int' in declaration of `vbv_delay'
1> /tmp/ffmpeg/libavcodec/avcodec.h:3056: warning: data definition has no type or storage class
1> /tmp/ffmpeg/libavcodec/avcodec.h:3085: error: parse error before '}' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:3085: warning: type defaults to `int' in declaration of `AVCodecContext'
1> /tmp/ffmpeg/libavcodec/avcodec.h:3085: warning: data definition has no type or storage class
1> /tmp/ffmpeg/libavcodec/avcodec.h:3087: warning: type defaults to `int' in declaration of `AVCodecContext'
1> /tmp/ffmpeg/libavcodec/avcodec.h:3087: error: parse error before '*' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:3087: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavcodec/avcodec.h:3088: error: parse error before '*' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:3088: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavcodec/avcodec.h:3090: warning: type defaults to `int' in declaration of `AVCodecContext'
1> /tmp/ffmpeg/libavcodec/avcodec.h:3090: error: parse error before '*' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:3090: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavcodec/avcodec.h:3091: error: parse error before '*' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:3091: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavcodec/avcodec.h:3132: warning: type defaults to `int' in declaration of `uint64_t'
1> /tmp/ffmpeg/libavcodec/avcodec.h:3132: warning: no semicolon at end of struct or union
1> /tmp/ffmpeg/libavcodec/avcodec.h:3132: error: parse error before '*' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:3133: warning: type defaults to `int' in declaration of `max_lowres'
1> /tmp/ffmpeg/libavcodec/avcodec.h:3133: warning: data definition has no type or storage class
1> /tmp/ffmpeg/libavcodec/avcodec.h:3155: error: parse error before '*' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:3155: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavcodec/avcodec.h:3163: error: parse error before '*' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:3163: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavcodec/avcodec.h:3176: error: parse error before '*' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:3176: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavcodec/avcodec.h:3177: error: parse error before '*' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:3178: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavcodec/avcodec.h:3189: error: parse error before '*' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:3190: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavcodec/avcodec.h:3191: error: parse error before '*' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:3191: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavcodec/avcodec.h:3192: error: parse error before '*' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:3192: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavcodec/avcodec.h:3192: error: 'close' redeclared as different kind of symbol
1> /usr/include/sys/unistd.h:27: error: previous declaration of 'close' was here
1> /tmp/ffmpeg/libavcodec/avcodec.h:3192: error: 'close' redeclared as different kind of symbol
1> /usr/include/sys/unistd.h:27: error: previous declaration of 'close' was here
1> /tmp/ffmpeg/libavcodec/avcodec.h:3197: error: parse error before '*' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:3197: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavcodec/avcodec.h:3198: warning: type defaults to `int' in declaration of `AVCodec'
1> /tmp/ffmpeg/libavcodec/avcodec.h:3198: warning: data definition has no type or storage class
1> /tmp/ffmpeg/libavcodec/avcodec.h:3254: error: parse error before '*' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:3254: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavcodec/avcodec.h:3267: error: parse error before '*' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:3267: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavcodec/avcodec.h:3278: error: parse error before '*' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:3278: warning: function declaration isn't a prototype
1> /tmp/ffmpeg/libavcodec/avcodec.h:3302: error: parse error before "uint8_t"
1> /tmp/ffmpeg/libavcodec/avcodec.h:3302: warning: no semicolon at end of struct or union
1> /tmp/ffmpeg/libavcodec/avcodec.h:3303: warning: redundant redeclaration of 'linesize'
1> /tmp/ffmpeg/libavcodec/avcodec.h:1048: warning: previous declaration of 'linesize' was here
1> /tmp/ffmpeg/libavcodec/avcodec.h:3304: error: parse error before '}' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:3304: warning: type defaults to `int' in declaration of `AVPicture'
1> /tmp/ffmpeg/libavcodec/avcodec.h:3304: warning: data definition has no type or storage class
1> /tmp/ffmpeg/libavcodec/avcodec.h:3339: error: parse error before "AVPicture"
1> /tmp/ffmpeg/libavcodec/avcodec.h:3339: warning: no semicolon at end of struct or union
1> /tmp/ffmpeg/libavcodec/avcodec.h:3340: error: conflicting types for 'type'
1> /tmp/ffmpeg/libavcodec/avcodec.h:1257: error: previous declaration of 'type' was here
1> /tmp/ffmpeg/libavcodec/avcodec.h:3340: error: conflicting types for 'type'
1> /tmp/ffmpeg/libavcodec/avcodec.h:1257: error: previous declaration of 'type' was here
1> /tmp/ffmpeg/libavcodec/avcodec.h:3356: error: parse error before '}' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:3356: warning: type defaults to `int' in declaration of `AVSubtitleRect'
1> /tmp/ffmpeg/libavcodec/avcodec.h:3356: warning: data definition has no type or storage class
1> /tmp/ffmpeg/libavcodec/avcodec.h:3359: error: parse error before "uint16_t"
1> /tmp/ffmpeg/libavcodec/avcodec.h:3359: warning: no semicolon at end of struct or union
1> /tmp/ffmpeg/libavcodec/avcodec.h:3360: warning: type defaults to `int' in declaration of `start_display_time'
1> /tmp/ffmpeg/libavcodec/avcodec.h:3360: warning: data definition has no type or storage class
1> /tmp/ffmpeg/libavcodec/avcodec.h:3361: error: parse error before "end_display_time"
1> /tmp/ffmpeg/libavcodec/avcodec.h:3361: warning: type defaults to `int' in declaration of `end_display_time'
1> /tmp/ffmpeg/libavcodec/avcodec.h:3361: warning: data definition has no type or storage class
1> /tmp/ffmpeg/libavcodec/avcodec.h:3363: error: parse error before '*' token
1> /tmp/ffmpeg/libavcodec/avcodec.h:3363: warning: type defaults to `int' in declaration of `rects'
1> /tmp/ffmpeg/libavcodec/avcodec.h:3363: warning: data definition has no type or storage class
1> /tmp/ffmpeg/libavcodec/avcodec.h:3364: warning: redundant redeclaration of 'pts'
1> /tmp/ffmpeg/libavcodec/avcodec.h:1128: warning: previous declaration of 'pts' was here
1> /tmp/ffmpeg/libavcodec/avcodec.h:3365: error: p
-
Oh. I'm surprised I never saw that error! :P
It's just that it can't find inttypes.h and stdint.h, which are provided in deps/headers/msvc. But I wonder why I never saw this issue while building FFmpeg…
What happens if in build_ffmpeg.sh at line 82, you replace
args="$args --disable-ffmpeg --disable-ffplay --disable-ffprobe --disable-ffserver --disable-doc --disable-encoders --disable-decoders --disable-muxers --disable-yasm $configure_flags $os_flags"
with
args="$args --disable-ffmpeg --disable-ffplay --disable-ffprobe --disable-ffserver --disable-doc --disable-encoders --disable-decoders --disable-muxers --disable-yasm $configure_flags $os_flags --extra-cflags=\"-I${source_dir}/deps/headers/msvc\""
then try to rebuild from Visual Studio?
-
Hi. I did as you said. but the library didn't build.
1>------ Rebuild All started: Project: ZERO_CHECK, Configuration: Release Win32 ------
1>Build started 12/04/2013 11:51:32.
1>InitializeBuildStatus:
1> Creating "Win32\Release\ZERO_CHECK\ZERO_CHECK.unsuccessfulbuild" because "AlwaysCreate" was specified.
1>CustomBuild:
1> Checking Build System
1> CMake does not need to re-run because D:/Programming/C++LIB/SFE_3/CMakeFiles/generate.stamp is up-to-date.
1>FinalizeBuildStatus:
1> Deleting file "Win32\Release\ZERO_CHECK\ZERO_CHECK.unsuccessfulbuild".
1> Touching "Win32\Release\ZERO_CHECK\ZERO_CHECK.lastbuildstate".
1>
1>Build succeeded.
1>
1>Time Elapsed 00:00:00.75
2>------ Rebuild All started: Project: FFmpeg, Configuration: Release Win32 ------
2>Build started 12/04/2013 11:51:33.
2>_PrepareForClean:
2> Deleting file "Win32\Release\FFmpeg\FFmpeg.lastbuildstate".
2>InitializeBuildStatus:
2> Touching "Win32\Release\FFmpeg\FFmpeg.unsuccessfulbuild".
2>CustomBuild:
2> Building Custom Rule C:/MinGW/msys/1.0/home/Rodion/sfe/CMakeLists.txt
2> CMake does not need to re-run because D:\Programming\C++LIB\SFE_3\CMakeFiles\generate.stamp is up-to-date.
2> Generating FFmpeg-binaries/lib/avformat.lib, FFmpeg-binaries/lib/avdevice.lib, FFmpeg-binaries/lib/avcodec.lib, FFmpeg-binaries/lib/avutil.lib, FFmpeg-binaries/lib/swscale.lib
2> Build directory : D:/Programming/C++LIB/SFE_3
2> OS : windows
2> Visual Studio : 1
2> OS X arch : notosx
2> Decoders : theora flac vorbis vp8
2> FFmpeg sources found, skipping archive extraction
2> /tmp/ffmpeg/configure --enable-shared --disable-static --disable-ffmpeg --disable-ffplay --disable-ffprobe --disable-ffserver --disable-doc --disable-encoders --disable-decoders --disable-muxers --disable-yasm --enable-decoder=theora --enable-decoder=flac --enable-decoder=vorbis --enable-decoder=vp8 --enable-memalign-hack --enable-w32threads --extra-cflags="-IC:/MinGW/msys/1.0/home/Rodion/sfe/deps/headers/msvc"
2> install prefix /usr/local
2> source path /tmp/ffmpeg
2> C compiler gcc
2> ARCH x86 (generic)
2> big-endian no
2> runtime cpu detection yes
2> yasm no
2> MMX enabled yes
2> MMXEXT enabled yes
2> 3DNow! enabled yes
2> 3DNow! extended enabled yes
2> SSE enabled yes
2> SSSE3 enabled yes
2> AVX enabled yes
2> FMA4 enabled yes
2> CMOV enabled no
2> CMOV is fast no
2> EBX available yes
2> EBP available no
2> debug symbols yes
2> strip symbols yes
2> optimize for size no
2> optimizations yes
2> static no
2> shared yes
2> postprocessing support no
2> new filter support yes
2> network support yes
2> threading support w32threads
2> safe bitstream reader yes
2> SDL support no
2> libdxva2 enabled no
2> libva enabled no
2> libvdpau enabled no
2> AVISynth enabled no
2> frei0r enabled no
2> gnutls enabled no
2> libaacplus enabled no
2> libass enabled no
2> libcaca enabled no
2> libcdio support no
2> libcelt enabled no
2> libdc1394 support no
2> libfaac enabled no
2> libfdk-aac enabled no
2> libgsm enabled no
2> libiec61883 support no
2> libilbc enabled no
2> libmodplug enabled no
2> libmp3lame enabled no
2> libnut enabled no
2> libopencore-amrnb support no
2> libopencore-amrwb support no
2> libopencv support no
2> libopenjpeg enabled no
2> libopus enabled no
2> libpulse enabled no
2> librtmp enabled no
2> libschroedinger enabled no
2> libspeex enabled no
2> libstagefright-h264 enabled no
2> libtheora enabled no
2> libtwolame enabled no
2> libutvideo enabled no
2> libv4l2 enabled no
2> libvo-aacenc support no
2> libvo-amrwbenc support no
2> libvorbis enabled no
2> libvpx enabled no
2> libx264 enabled no
2> libxavs enabled no
2> libxvid enabled no
2> openal enabled no
2> openssl enabled no
2> zlib enabled no
2> bzlib enabled no
2> texi2html enabled no
2> perl enabled yes
2> pod2man enabled yes
2> makeinfo enabled yes
2>
2> Enabled decoders:
2> flac vorbis vp8
2> theora vp3
2>
2> Enabled encoders:
2>
2> Enabled hwaccels:
2>
2> Enabled parsers:
2> aac dvbsub mpegaudio
2> aac_latm dvdsub mpegvideo
2> ac3 flac png
2> adx gsm pnm
2> bmp h261 rv30
2> cavsvideo h263 rv40
2> cook h264 vc1
2> dca mjpeg vorbis
2> dirac mlp vp3
2> dnxhd mpeg4video vp8
2>
2> Enabled demuxers:
2> aac image2 pcm_u32le
2> ac3 image2pipe pcm_u8
2> act ingenient pmp
2> adf ipmovie pva
2> adx iss qcp
2> aea iv8 r3d
2> aiff ivf rawvideo
2> amr jacosub realtext
2> anm jv rl2
2> apc latm rm
2> ape lmlm4 roq
2> asf loas rpl
2> ass lxf rso
2> au m4v rtp
2> avi matroska rtsp
2> avs mgsts sami
2> bethsoftvid microdvd sap
2> bfi mjpeg sbg
2> bink mlp sdp
2> bintext mm segafilm
2> bit mmf shorten
2> bmv mov siff
2> c93 mp3 smacker
2> caf mpc smjpeg
2> cavsvideo mpc8 smush
2> cdg mpegps sol
2> cdxl mpegts sox
2> daud mpegtsraw spdif
2> dfa mpegvideo srt
2> dirac msnwc_tcp str
2> dnxhd mtv subviewer
2> dsicin mvi swf
2> dts mxf thp
2> dv mxg tiertexseq
2> dxa nc tmv
2> ea nsv truehd
2> ea_cdata nut tta
2> eac3 nuv tty
2> ffm ogg txd
2> ffmetadata oma vc1
2> filmstrip paf vc1t
2> flac pcm_alaw vmd
2> flic pcm_f32be voc
2> flv pcm_f32le vqf
2> fourxm pcm_f64be w64
2> g722 pcm_f64le wav
2> g723_1 pcm_mulaw wc3
2> g729 pcm_s16be webvtt
2> gsm pcm_s16le wsaud
2> gxf pcm_s24be wsvqa
2> h261 pcm_s24le wtv
2> h263 pcm_s32be wv
2> h264 pcm_s32le xa
2> hls pcm_s8 xbin
2> ico pcm_u16be xmv
2> idcin pcm_u16le xwma
2> idf pcm_u24be yop
2> iff pcm_u24le yuv4mpegpipe
2> ilbc pcm_u32be
2>
2> Enabled muxers:
2>
2> Enabled protocols:
2> applehttp hls pipe
2> cache http rtmp
2> concat httpproxy rtmpt
2> crypto md5 rtp
2> ffrtmphttp mmsh tcp
2> file mmst udp
2> gopher
2>
2> Enabled filters:
2> aconvert crop pan
2> aevalsrc deshake pixdesctest
2> afifo drawbox removelogo
2> aformat earwax rgbtestsrc
2> alphaextract edgedetect scale
2> alphamerge fade select
2> amerge fieldorder sendcmd
2> amix fifo setdar
2> amovie format setfield
2> anull fps setpts
2> anullsink framestep setsar
2> anullsrc gradfun settb
2> aresample hflip showinfo
2> asendcmd hue showwaves
2> asetnsamples idet silencedetect
2> asetpts join slicify
2> asettb life smptebars
2> ashowinfo lut split
2> asink lutrgb swapuv
2> asink lutyuv testsrc
2> asplit mandelbrot thumbnail
2> astreamsync movie tile
2> bbox negate transpose
2> blackdetect noformat unsharp
2> cellauto null vflip
2> channelmap nullsink volume
2> channelsplit nullsrc volumedetect
2> color overlay vsink
2> concat pad vsink
2> copy
2>
2> Enabled bsfs:
2> aac_adtstoasc mjpeg2jpeg mp3_header_decompress
2> chomp mjpega_dump_header noise
2> dump_extradata mov2textsub remove_extradata
2> h264_mp4toannexb mp3_header_compress text2movsub
2> imx_dump_header
2>
2> Enabled indevs:
2> lavfi oss vfwcap
2>
2> Enabled outdevs:
2> oss
2>
2> License: LGPL version 2.1 or later
2> Creating config.mak and config.h...
2> libavutil/avconfig.h is unchanged
2>
2>CUSTOMBUILD : warning : pkg-config not found, library detection may fail.
2> CC libavdevice/alldevices.o
2> CC libavdevice/avdevice.o
2> CC libavdevice/lavfi.o
2> CC libavdevice/oss_audio.o
2> In file included from /tmp/ffmpeg/libavutil/avutil.h:274,
2> from /tmp/ffmpeg/libavutil/avassert.h:31,
2> from /tmp/ffmpeg/libavdevice/avdevice.c:19:
2> /tmp/ffmpeg/libavutil/common.h:65: error: parse error before "ff_log2_tab"
2> /tmp/ffmpeg/libavutil/common.h:65: warning: type defaults to `int' in declaration of `ff_log2_tab'
2> In file included from /tmp/ffmpeg/libavutil/avutil.h:274,
2> from /tmp/ffmpeg/libavdevice/version.h:28,
2> from /tmp/ffmpeg/libavdevice/avdevice.h:22,
2> from /tmp/ffmpeg/libavdevice/alldevices.c:22:
2> /tmp/ffmpeg/libavutil/common.h:65: error: parse error before "ff_log2_tab"
2> /tmp/ffmpeg/libavutil/common.h:65: warning: type defaults to `int' in declaration of `ff_log2_tab'
2> /tmp/ffmpeg/libavutil/common.h:65: warning: data definition has no type or storage class
2> /tmp/ffmpeg/libavutil/common.h:70: error: parse error before "av_reverse"
2> /tmp/ffmpeg/libavutil/common.h:70: warning: type defaults to `int' in declaration of `av_reverse'
2> /tmp/ffmpeg/libavutil/common.h:70: warning: data definition has no type or storage class
2> /tmp/ffmpeg/libavutil/common.h:65: warning: data definition has no type or storage class
2> /tmp/ffmpeg/libavutil/common.h:70: error: parse error before "av_reverse"
2> /tmp/ffmpeg/libavutil/common.h:70: warning: type defaults to `int' in declaration of `av_reverse'
2> /tmp/ffmpeg/libavutil/common.h:70: warning: data definition has no type or storage class
2> In file included from /tmp/ffmpeg/libavutil/avutil.h:274,
2> from /tmp/ffmpeg/libavutil/log.h:25,
2> from /tmp/ffmpeg/libavdevice/lavfi.c:30:
2> /tmp/ffmpeg/libavutil/common.h:65: error: parse error before "ff_log2_tab"
2> /tmp/ffmpeg/libavutil/common.h:65: warning: type defaults to `int' in declaration of `ff_log2_tab'
2> /tmp/ffmpeg/libavutil/common.h:65: warning: data definition has no type or storage class
2> /tmp/ffmpeg/libavutil/common.h:70: error: parse error before "av_reverse"
2> /tmp/ffmpeg/libavutil/common.h:70: warning: type defaults to `int' in declaration of `av_reverse'
2> /tmp/ffmpeg/libavutil/common.h:70: warning: data definition has no type or storage class
2> In file included from /tmp/ffmpeg/libavutil/common.h:102,
2> from /tmp/ffmpeg/libavutil/avutil.h:274,
2> from /tmp/ffmpeg/libavutil/avassert.h:31,
2> from /tmp/ffmpeg/libavdevice/avdevice.c:19:
2> /tmp/ffmpeg/libavutil/intmath.h:33: error: parse error before "ff_inverse"
2> /tmp/ffmpeg/libavutil/intmath.h:33: warning: type defaults to `int' in declaration of `ff_inverse'
2> In file included from /tmp/ffmpeg/libavutil/common.h:102,
2> from /tmp/ffmpeg/libavutil/avutil.h:274,
2> from /tmp/ffmpeg/libavdevice/version.h:28,
2> from /tmp/ffmpeg/libavdevice/avdevice.h:22,
2> from /tmp/ffmpeg/libavdevice/alldevices.c:22:
2> /tmp/ffmpeg/libavutil/intmath.h:33: error: parse error before "ff_inverse"
2> /tmp/ffmpeg/libavutil/intmath.h:33: warning: data definition has no type or storage class
2> /tmp/ffmpeg/libavutil/intmath.h:33: warning: type defaults to `int' in declaration of `ff_inverse'
2> /tmp/ffmpeg/libavutil/intmath.h:33: warning: data definition has no type or storage class
2> In file included from /tmp/ffmpeg/libavutil/common.h:102,
2> from /tmp/ffmpeg/libavutil/avutil.h:274,
2> from /tmp/ffmpeg/libavutil/log.h:25,
2> from /tmp/ffmpeg/libavdevice/lavfi.c:30:
2> /tmp/ffmpeg/libavutil/intmath.h:33: error: parse error before "ff_inverse"
2> /tmp/ffmpeg/libavutil/intmath.h:33: warning: type defaults to `int' in declaration of `ff_inverse'
2> /tmp/ffmpeg/libavutil/intmath.h:33: warning: data definition has no type or storage class
2> In file included from /tmp/ffmpeg/libavutil/avutil.h:274,
2> from /tmp/ffmpeg/libavutil/log.h:25,
2> from /tmp/ffmpeg/libavdevice/oss_audio.c:37:
2> /tmp/ffmpeg/libavutil/common.h:65: error: parse error before "ff_log2_tab"
2> /tmp/ffmpeg/libavutil/common.h:65: warning: type defaults to `int' in declaration of `ff_log2_tab'
2> /tmp/ffmpeg/libavutil/common.h:65: warning: data definition has no type or storage class
2> /tmp/ffmpeg/libavutil/common.h:70: error: parse error before "av_reverse"
2> /tmp/ffmpeg/libavutil/common.h:70: warning: type defaults to `int' in declaration of `av_reverse'
2> /tmp/ffmpeg/libavutil/common.h:70: warning: data definition has no type or storage class
2> In file included from /tmp/ffmpeg/libavutil/common.h:102,
2> from /tmp/ffmpeg/libavutil/avutil.h:274,
2> from /tmp/ffmpeg/libavutil/log.h:25,
2> from /tmp/ffmpeg/libavdevice/oss_audio.c:37:
2> /tmp/ffmpeg/libavutil/intmath.h:33: error: parse error before "ff_inverse"
2> /tmp/ffmpeg/libavutil/intmath.h:33: warning: type defaults to `int' in declaration of `ff_inverse'
2> /tmp/ffmpeg/libavutil/intmath.h:33: warning: data definition has no type or storage class
2> In file included from /tmp/ffmpeg/libavutil/common.h:102,
2> from /tmp/ffmpeg/libavutil/avutil.h:274,
2> from /tmp/ffmpeg/libavutil/avassert.h:31,
2> from /tmp/ffmpeg/libavdevice/avdevice.c:19:
2> /tmp/ffmpeg/libavutil/intmath.h:58: error: parse error before "ff_sqrt_tab"
2> /tmp/ffmpeg/libavutil/intmath.h:58: warning: type defaults to `int' in declaration of `ff_sqrt_tab'
2> /tmp/ffmpeg/libavutil/intmath.h:58: warning: data definition has no type or storage class
2> In file included from /tmp/ffmpeg/libavutil/common.h:102,
2> from /tmp/ffmpeg/libavutil/avutil.h:274,
2> from /tmp/ffmpeg/libavdevice/version.h:28,
2> from /tmp/ffmpeg/libavdevice/avdevice.h:22,
2> from /tmp/ffmpeg/libavdevice/alldevices.c:22:
2> /tmp/ffmpeg/libavutil/intmath.h:58: error: parse error before "ff_sqrt_tab"
2> /tmp/ffmpeg/libavutil/intmath.h:58: warning: type defaults to `int' in declaration of `ff_sqrt_tab'
2> /tmp/ffmpeg/libavutil/intmath.h:58: warning: data definition has no type or storage class
2> In file included from /tmp/ffmpeg/libavutil/common.h:102,
2> from /tmp/ffmpeg/libavutil/avutil.h:274,
2> from /tmp/ffmpeg/libavutil/log.h:25,
2> from /tmp/ffmpeg/libavdevice/oss_audio.c:37:
2> /tmp/ffmpeg/libavutil/intmath.h:58: error: parse error before "ff_sqrt_tab"
2> /tmp/ffmpeg/libavutil/intmath.h:58: warning: type defaults to `int' in declaration of `ff_sqrt_tab'
2> /tmp/ffmpeg/libavutil/intmath.h:58: warning: data definition has no type or storage class
2> In file included from /tmp/ffmpeg/libavutil/common.h:102,
2> from /tmp/ffmpeg/libavutil/avutil.h:274,
2> from /tmp/ffmpeg/libavutil/log.h:25,
2> from /tmp/ffmpeg/libavdevice/lavfi.c:30:
2> /tmp/ffmpeg/libavutil/intmath.h:58: error: parse error before "ff_sqrt_tab"
2> /tmp/ffmpeg/libavutil/intmath.h:58: warning: type defaults to `int' in declaration of `ff_sqrt_tab'
2> /tmp/ffmpeg/libavutil/intmath.h:58: warning: data definition has no type or storage class
2> In file included from /tmp/ffmpeg/libavutil/avutil.h:274,
2> from /tmp/ffmpeg/libavdevice/version.h:28,
2> from /tmp/ffmpeg/libavdevice/avdevice.h:22,
2> from /tmp/ffmpeg/libavdevice/alldevices.c:22:
2> /tmp/ffmpeg/libavutil/common.h:127: error: parse error before "av_clip_uint8_c"
2> /tmp/ffmpeg/libavutil/common.h:128: warning: return type defaults to `int'
2> /tmp/ffmpeg/libavutil/common.h:128: warning: no previous prototype for 'av_clip_uint8_c'
2> /tmp/ffmpeg/libavutil/common.h:138: error: parse error before "av_clip_int8_c"
2> /tmp/ffmpeg/libavutil/common.h:139: warning: return type defaults to `int'
2> /tmp/ffmpeg/libavutil/common.h:139: warning: no previous prototype for 'av_clip_int8_c'
2> /tmp/ffmpeg/libavutil/common.h:149: error: parse error before "av_clip_uint16_c"
2> /tmp/ffmpeg/libavutil/common.h:150: warning: return type defaults to `int'
2> /tmp/ffmpeg/libavutil/common.h:150: warning: no previous prototype for 'av_clip_uint16_c'
2> In file included from /tmp/ffmpeg/libavutil/avutil.h:274,
2> from /tmp/ffmpeg/libavutil/log.h:25,
2> from /tmp/ffmpeg/libavdevice/oss_audio.c:37:
2> /tmp/ffmpeg/libavutil/common.h:127: error: parse error before "av_clip_uint8_c"
2> /tmp/ffmpeg/libavutil/common.h:128: warning: return type defaults to `int'
2> /tmp/ffmpeg/libavutil/common.h:128: warning: no previous prototype for 'av_clip_uint8_c'
2> /tmp/ffmpeg/libavutil/common.h:160: error: parse error before "av_clip_int16_c"
2> /tmp/ffmpeg/libavutil/common.h:149: error: parse error before "av_clip_uint16_c"
2> /tmp/ffmpeg/libavutil/common.h:161: warning: return type defaults to `int'
2> /tmp/ffmpeg/libavutil/common.h:150: warning: return type defaults to `int'
2> /tmp/ffmpeg/libavutil/common.h:150: warning: no previous prototype for 'av_clip_uint16_c'
2> /tmp/ffmpeg/libavutil/common.h:161: warning: no previous prototype for 'av_clip_int16_c'
2> In file included from /tmp/ffmpeg/libavutil/avutil.h:274,
2> from /tmp/ffmpeg/libavutil/log.h:25,
2> from /tmp/ffmpeg/libavdevice/lavfi.c:30:
2> /tmp/ffmpeg/libavutil/common.h:127: error: parse error before "av_clip_uint8_c"
2> /tmp/ffmpeg/libavutil/common.h:171: error: parse error before "av_clipl_int32_c"
2> /tmp/ffmpeg/libavutil/common.h:128: warning: return type defaults to `int'
2> /tmp/ffmpeg/libavutil/common.h:171: error: parse error before "a"
2> /tmp/ffmpeg/libavutil/common.h: In function `av_clipl_int32_c':
2> /tmp/ffmpeg/libavutil/common.h:173: warning: implicit declaration of function `UINT64_C'
2> /tmp/ffmpeg/libavutil/common.h:172: warning: return type defaults to `int'
2> /tmp/ffmpeg/libavutil/common.h:172: warning: function declaration isn't a prototype
2> /tmp/ffmpeg/libavutil/common.h: In function `av_clipl_int32_c':
2> /tmp/ffmpeg/libavutil/common.h:173: error: `a' undeclared (first use in this function)
2> /tmp/ffmpeg/libavutil/common.h:173: error: (Each undeclared identifier is reported only once
2> /tmp/ffmpeg/libavutil/common.h:173: error: for each function it appears in.)
2> /tmp/ffmpeg/libavutil/common.h:173: warning: implicit declaration of function `UINT64_C'
2> /tmp/ffmpeg/libavutil/common.h:128: warning: no previous prototype for 'av_clip_uint8_c'/tmp/ffmpeg/libavutil/common.h:174: error: `int32_t' undeclared (first use in this function)
2>
2> /tmp/ffmpeg/libavutil/common.h:174: error: parse error before "a"
2> /tmp/ffmpeg/libavutil/common.h:138: error: parse error before "av_clip_int8_c"
2> /tmp/ffmpeg/libavutil/common.h:139: warning: return type defaults to `int'
2> /tmp/ffmpeg/libavutil/common.h:139: warning: no previous prototype for 'av_clip_int8_c'
2> /tmp/ffmpeg/libavutil/common.h: At top level:
2> /tmp/ffmpeg/libavutil/common.h:149: error: parse error before "av_clip_uint16_c"/tmp/ffmpeg/libavutil/common.h:241: error: parse error before "x"
2>
2> /tmp/ffmpeg/libavutil/common.h:242: warning: function declaration isn't a prototype
2> /tmp/ffmpeg/libavutil/common.h:150: warning: return type defaults to `int'
2> /tmp/ffmpeg/libavutil/common.h:150: warning: no previous prototype for 'av_clip_uint16_c'
2> /tmp/ffmpeg/libavutil/common.h: In function `av_popcount_c':
2> /tmp/ffmpeg/libavutil/common.h:243: error: `x' undeclared (first use in this function)
2> /tmp/ffmpeg/libavutil/common.h:243: error: (Each undeclared identifier is reported only once
2> /tmp/ffmpeg/libavutil/common.h:243: error: for each function it appears in.)
2> /tmp/ffmpeg/libavutil/common.h: At top level:
2> /tmp/ffmpeg/libavutil/common.h: In function `av_sat_add32_c':/tmp/ffmpeg/libavutil/common.h:255: error: parse error before "x"
2>
2> /tmp/ffmpeg/libavutil/common.h:160: error: parse error before "av_clip_int16_c"/tmp/ffmpeg/libavutil/common.h:198: error: `int64_t' undeclared (first use in this function)
2>
2> /tmp/ffmpeg/libavutil/common.h:256: warning: function declaration isn't a prototype
2> /tmp/ffmpeg/libavutil/common.h:198: error: parse error before "a"
2> /tmp/ffmpeg/libavutil/common.h:161: warning: return type defaults to `int'/tmp/ffmpeg/libavutil/common.h: In function `av_popcount64_c':
2>
2> /tmp/ffmpeg/libavutil/common.h:199: warning: no return statement in function returning non-void/tmp/ffmpeg/libavutil/common.h:257: error: `uint32_t' undeclared (first use in this function)
2> /tmp/ffmpeg/libavutil/common.h:161: warning: no previous prototype for 'av_clip_int16_c'/tmp/ffmpeg/libavutil/common.h:257: error: parse error before "x"
2>
2>
2> /tmp/ffmpeg/libavutil/common.h:258: warning: no return statement in function returning non-void
2> /tmp/ffmpeg/libavutil/common.h:171: error: parse error before "av_clipl_int32_c"
2> /tmp/ffmpeg/libavutil/common.h:171: error: parse error before "a"
2> /tmp/ffmpeg/libavutil/common.h:172: warning: return type defaults to `int'
2> /tmp/ffmpeg/libavutil/common.h:172: warning: function declaration isn't a prototype
2> /tmp/ffmpeg/libavutil/common.h: In function `av_clipl_int32_c':
2> /tmp/ffmpeg/libavutil/common.h:173: error: `a' undeclared (first use in this function)
2> /tmp/ffmpeg/libavutil/common.h:173: error: (Each undeclared identifier is reported only once
2> /tmp/ffmpeg/libavutil/common.h:173: error: for each function it appears in.)
2> /tmp/ffmpeg/libavutil/common.h:173: warning: implicit declaration of function `UINT64_C'
2> /tmp/ffmpeg/libavutil/common.h: At top level:
2> /tmp/ffmpeg/libavutil/common.h:241: error: parse error before "x"
2> /tmp/ffmpeg/libavutil/common.h:174: error: `int32_t' undeclared (first use in this function)
2> /tmp/ffmpeg/libavutil/common.h:242: warning: function declaration isn't a prototype
2> /tmp/ffmpeg/libavutil/common.h:174: error: parse error before "a"/tmp/ffmpeg/libavutil/common.h: In function `av_popcount_c':
2>
2> /tmp/ffmpeg/libavutil/common.h:243: error: `x' undeclared (first use in this function)
2> /tmp/ffmpeg/libavutil/common.h: At top level:
2> /tmp/ffmpeg/libavutil/common.h:255: error: parse error before "x"
2> /tmp/ffmpeg/libavutil/common.h:256: warning: function declaration isn't a prototype
2> /tmp/ffmpeg/libavutil/common.h: In function `av_sat_add32_c':
2> /tmp/ffmpeg/libavutil/common.h: In function `av_popcount64_c':/tmp/ffmpeg/libavutil/common.h:198: error: `int64_t' undeclared (first use in this function)
2>
2> /tmp/ffmpeg/libavutil/common.h:257: error: `uint32_t' undeclared (first use in this function)
2> /tmp/ffmpeg/libavutil/common.h:198: error: parse error before "a"
2> /tmp/ffmpeg/libavutil/common.h:257: error: parse error before "x"
2> /tmp/ffmpeg/libavutil/common.h:199: warning: no return statement in function returning non-void
2> /tmp/ffmpeg/libavutil/common.h:258: warning: no return statement in function returning non-void
2> /tmp/ffmpeg/libavutil/common.h: At top level:
2> /tmp/ffmpeg/libavutil/common.h:241: error: parse error before "x"
2> /tmp/ffmpeg/libavutil/common.h:242: warning: function declaration isn't a prototype
2> /tmp/ffmpeg/libavutil/common.h: In function `av_popcount_c':
2> /tmp/ffmpeg/libavutil/common.h:243: error: `x' undeclared (first use in this function)
2> /tmp/ffmpeg/libavutil/common.h: At top level:
2> /tmp/ffmpeg/libavutil/common.h:255: error: parse error before "x"
2> /tmp/ffmpeg/libavutil/common.h:256: warning: function declaration isn't a prototype
2> /tmp/ffmpeg/libavutil/common.h: In function `av_popcount64_c':
2> /tmp/ffmpeg/libavutil/common.h:257: error: `uint32_t' undeclared (first use in this function)
2> /tmp/ffmpeg/libavutil/common.h:257: error: parse error before "x"
2> /tmp/ffmpeg/libavutil/common.h:258: warning: no return statement in function returning non-void
2> In file included from /tmp/ffmpeg/libavutil/avutil.h:274,
2> from /tmp/ffmpeg/libavutil/avassert.h:31,
2> from /tmp/ffmpeg/libavdevice/avdevice.c:19:
2> /tmp/ffmpeg/libavutil/common.h:127: error: parse error before "av_clip_uint8_c"
2> /tmp/ffmpeg/libavutil/common.h:128: warning: return type defaults to `int'
2> /tmp/ffmpeg/libavutil/common.h:128: warning: no previous prototype for 'av_clip_uint8_c'
2> /tmp/ffmpeg/libavutil/common.h:138: error: parse error before "av_clip_int8_c"
2> /tmp/ffmpeg/libavutil/common.h:139: warning: return type defaults to `int'
2> /tmp/ffmpeg/libavutil/common.h:139: warning: no previous prototype for 'av_clip_int8_c'
2> /tmp/ffmpeg/libavutil/common.h:149: error: parse error before "av_clip_uint16_c"
2> /tmp/ffmpeg/libavutil/common.h:150: warning: return type defaults to `int'
2> /tmp/ffmpeg/libavutil/common.h:150: warning: no previous prototype for 'av_clip_uint16_c'
2> /tmp/ffmpeg/libavutil/common.h:160: error: parse error before "av_clip_int16_c"
2> /tmp/ffmpeg/libavutil/common.h:161: warning: return type defaults to `int'
2> /tmp/ffmpeg/libavutil/common.h:161: warning: no previous prototype for 'av_clip_int16_c'
2> /tmp/ffmpeg/libavutil/common.h:171: error: parse error before "av_clipl_int32_c"
2> /tmp/ffmpeg/libavutil/common.h:171: error: parse error before "a"
2> /tmp/ffmpeg/libavutil/common.h:172: warning: return type defaults to `int'
2> /tmp/ffmpeg/libavutil/common.h:172: warning: function declaration isn't a prototype
2> /tmp/ffmpeg/libavutil/common.h: In function `av_clipl_int32_c':
2> /tmp/ffmpeg/libavutil/common.h:173: error: `a' undeclared (first use in this function)
2> /tmp/ffmpeg/libavutil/common.h:173: error: (Each undeclared identifier is reported only once
2> /tmp/ffmpeg/libavutil/common.h:173: error: for each function it appears in.)
2> /tmp/ffmpeg/libavutil/common.h:173: warning: implicit declaration of function `UINT64_C'
2> /tmp/ffmpeg/libavutil/common.h:174: error: `int32_t' undeclared (first use in this function)
2> /tmp/ffmpeg/libavutil/common.h:174: error: parse error before "a"
2> /tmp/ffmpeg/libavutil/common.h: In function `av_sat_add32_c':
2> /tmp/ffmpeg/libavutil/common.h:198: error: `int64_t' undeclared (first use in this function)
2> /tmp/ffmpeg/libavutil/common.h:198: error: parse error before "a"
2> /tmp/ffmpeg/libavutil/common.h:199: warning: no return statement in function returning non-void
2> /tmp/ffmpeg/libavutil/common.h: At top level:
2> /tmp/ffmpeg/libavutil/common.h:241: error: parse error before "x"
2> /tmp/ffmpeg/libavutil/common.h:242: warning: function declaration isn't a prototype
2> /tmp/ffmpeg/libavutil/common.h: In function `av_popcount_c':
2> /tmp/ffmpeg/libavutil/common.h:243: error: `x' undeclared (first use in this function)
2> /tmp/ffmpeg/libavutil/common.h: At top level:
2> /tmp/ffmpeg/libavutil/common.h:255: error: parse error before "x"
2> /tmp/ffmpeg/libavutil/common.h:256: warning: function declaration isn't a prototype
2> /tmp/ffmpeg/libavutil/common.h: In function `av_popcount64_c':
2> /tmp/ffmpeg/libavutil/common.h:257: error: `uint32_t' undeclared (first use in this function)
2> /tmp/ffmpeg/libavutil/common.h:257: error: parse error before "x"
2> /tmp/ffmpeg/libavutil/common.h:258: warning: no return statement in function returning non-void
2> In file included from /tmp/ffmpeg/libavutil/timer.h:42,
2> from /tmp/ffmpeg/libavutil/internal.h:39,
2> from /tmp/ffmpeg/libavutil/common.h:379,
2> from /tmp/ffmpeg/libavutil/avutil.h:274,
2> from /tmp/ffmpeg/libavdevice/version.h:28,
2> from /tmp/ffmpeg/libavdevice/avdevice.h:22,
2> from /tmp/ffmpeg/libavdevice/alldevices.c:22:
2> /tmp/ffmpeg/libavutil/x86/timer.h: At top level:
2> /tmp/ffmpeg/libavutil/x86/timer.h:30: error: parse error before "read_time"
2> In file included from /tmp/ffmpeg/libavutil/timer.h:42,
2> from /tmp/ffmpeg/libavutil/internal.h:39,
2> from /tmp/ffmpeg/libavutil/common.h:379,
2> from /tmp/ffmpeg/libavutil/avutil.h:274,
2> from /tmp/ffmpeg/libavutil/log.h:25,
2> from /tmp/ffmpeg/libavdevice/lavfi.c:30:
2> /tmp/ffmpeg/libavutil/x86/timer.h: At top level:
2> /tmp/ffmpeg/libavutil/x86/timer.h:31: warning: return type defaults to `int'/tmp/ffmpeg/libavutil/x86/timer.h:30: error: parse error before "read_time"
2>
2> /tmp/ffmpeg/libavutil/x86/timer.h:31: warning: no previous prototype for 'read_time'
2> /tmp/ffmpeg/libavutil/x86/timer.h:31: warning: return type defaults to `int'
2> /tmp/ffmpeg/libavutil/x86/timer.h:31: warning: no previous prototype for 'read_time'
2> /tmp/ffmpeg/libavutil/x86/timer.h: In function `read_time':
2> /tmp/ffmpeg/libavutil/x86/timer.h:32: error: `uint32_t' undeclared (first use in this function)
2> /tmp/ffmpeg/libavutil/x86/timer.h: In function `read_time':/tmp/ffmpeg/libavutil/x86/timer.h:32: error: parse error before "a"
2>
2> /tmp/ffmpeg/libavutil/x86/timer.h:32: error: `uint32_t' undeclared (first use in this function)
2> /tmp/ffmpeg/libavutil/x86/timer.h:32: error: parse error before "a"
2> /tmp/ffmpeg/libavutil/x86/timer.h:33: error: `d' undeclared (first use in this function)In file included from /tmp/ffmpeg/libavutil/timer.h:42,
2> from /tmp/ffmpeg/libavutil/internal.h:39,
2> from /tmp/ffmpeg/libavutil/common.h:379,
2> from /tmp/ffmpeg/libavutil/avutil.h:274,
2> from /tmp/ffmpeg/libavutil/log.h:25,
2> from /tmp/ffmpeg/libavdevice/oss_audio.c:37:
2> /tmp/ffmpeg/libavutil/x86/timer.h: At top level:
2> /tmp/ffmpeg/libavutil/x86/timer.h:33: error: `d' undeclared (first use in this function)/tmp/ffmpeg/libavutil/x86/timer.h:30: error: parse error before "read_time"
2>
2> /tmp/ffmpeg/libavutil/x86/timer.h:34: error: `uint64_t' undeclared (first use in this function)
2> /tmp/ffmpeg/libavutil/x86/timer.h:34: error: `uint64_t' undeclared (first use in this function)
2> /tmp/ffmpeg/libavutil/x86/timer.h:34: error: parse error before "d"
2> /tmp/ffmpeg/libavutil/x86/timer.h:34: error: parse error before "d"
2> In file included from /tmp/ffmpeg/libavutil/timer.h:42,
2> from /tmp/ffmpeg/libavutil/internal.h:39,
2> from /tmp/ffmpeg/libavutil/common.h:379,
2> from /tmp/ffmpeg/libavutil/avutil.h:274,
2> from /tmp/ffmpeg/libavutil/avassert.h:31,
2> from /tmp/ffmpeg/libavdevice/avdevice.c:19:
2> /tmp/ffmpeg/libavutil/x86/timer.h: At top level:
2> /tmp/ffmpeg/libavutil/x86/timer.h:30: error: parse error before "read_time"
2> /tmp/ffmpeg/libavutil/x86/timer.h:31: warning: return type defaults to `int'
2> /tmp/ffmpeg/libavutil/x86/timer.h:31: warning: no previous prototype for 'read_time'
2> /tmp/ffmpeg/libavutil/x86/timer.h: In function `read_time':
2> /tmp/ffmpeg/libavutil/x86/timer.h:32: error: `uint32_t' undeclared (first use in this function)
2> /tmp/ffmpeg/libavutil/x86/timer.h:32: error: parse error before "a"
2> /tmp/ffmpeg/libavutil/x86/timer.h:33: error: `d' undeclared (first use in this function)
2> /tmp/ffmpeg/libavutil/x86/timer.h:34: error: `uint64_t' undeclared (first use in this function)
2> /tmp/ffmpeg/libavutil/x86/timer.h:34: error: parse error before "d"
2>
2> /tmp/ffmpeg/libavutil/x86/timer.h:31: warning: return type defaults to `int'
2> /tmp/ffmpeg/libavutil/x86/timer.h:31: warning: no previous prototype for 'read_time'
2> /tmp/ffmpeg/libavutil/x86/timer.h: In function `read_time':
2> /tmp/ffmpeg/libavutil/x86/timer.h:32: error: `uint32_t' undeclared (first use in this function)
2> /tmp/ffmpeg/libavutil/x86/timer.h:32: error: parse error before "a"
2> /tmp/ffmpeg/libavutil/x86/timer.h:33: error: `a' undeclared (first use in this function)
2> /tmp/ffmpeg/libavutil/x86/timer.h:33: error: `d' undeclared (first use in this function)
2> /tmp/ffmpeg/libavutil/x86/timer.h:34: error: `uint64_t' undeclared (first use in this function)
2> /tmp/ffmpeg/libavutil/x86/timer.h:34: error: parse error before "d"
2> In file included from /tmp/ffmpeg/libavutil/libm.h:30,
2> from /tmp/ffmpeg/libavutil/internal.h:109,
2> from /tmp/ffmpeg/libavutil/common.h:379,
2> from /tmp/ffmpeg/libavutil/avutil.h:274,
2> from /tmp/ffmpeg/libavutil/log.h:25,
2> from /tmp/ffmpeg/libavdevice/oss_audio.c:37:
2> /tmp/ffmpeg/libavutil/intfloat.h: At top level:
2> /tmp/ffmpeg/libavutil/intfloat.h:28: error: parse error before "uint32_t"
2> /tmp/ffmpeg/libavutil/intfloat.h:28: warning: no semicolon at end of struct or union
2> /tmp/ffmpeg/libavutil/intfloat.h:30: error: parse error before '}' token
2> /tmp/ffmpeg/libavutil/intfloat.h:33: error: parse error before "uint64_t"
2> /tmp/ffmpeg/libavutil/intfloat.h:33: warning: no semicolon at end of struct or union
2> In file included from /tmp/ffmpeg/libavutil/libm.h:30,
2> from /tmp/ffmpeg/libavutil/internal.h:109,
2> from /tmp/ffmpeg/libavutil/common.h:379,
2> from /tmp/ffmpeg/libavutil/avutil.h:274,
2> from /tmp/ffmpeg/libavutil/avassert.h:31,
2> from /tmp/ffmpeg/libavdevice/avdevice.c:19:
2> /tmp/ffmpeg/libavutil/intfloat.h: At top level:
2> /tmp/ffmpeg/libavutil/intfloat.h:34: error: conflicting types for 'f'
2> /tmp/ffmpeg/libavutil/intfloat.h:28: error: parse error before "uint32_t"
2> /tmp/ffmpeg/libavutil/intfloat.h:29: error: previous declaration of 'f' was here
2> /tmp/ffmpeg/libavutil/intfloat.h:28: warning: no semicolon at end of struct or union
2> /tmp/ffmpeg/libavutil/intfloat.h:35: error: parse error before '}' token
2> /tmp/ffmpeg/libavutil/intfloat.h:40: error: parse error before "i"
2> In file included from /tmp/ffmpeg/libavutil/libm.h:30,
2> from /tmp/ffmpeg/libavutil/internal.h:109,
2> from /tmp/ffmpeg/libavutil/common.h:379,
2> from /tmp/ffmpeg/libavutil/avutil.h:274,
2> from /tmp/ffmpeg/libavdevice/version.h:28,
2> from /tmp/ffmpeg/libavdevice/avdevice.h:22,
2> from /tmp/ffmpeg/libavdevice/alldevices.c:22:
2> /tmp/ffmpeg/libavutil/intfloat.h: At top level:
2> /tmp/ffmpeg/libavutil/intfloat.h:28: error: parse error before "uint32_t"
2> /tmp/ffmpeg/libavutil/intfloat.h:41: warning: function declaration isn't a prototype/tmp/ffmpeg/libavutil/intfloat.h:28: warning: no semicolon at end of struct or union
2>
2> /tmp/ffmpeg/libavutil/intfloat.h: In function `av_int2float':
2> /tmp/ffmpeg/libavutil/intfloat.h:42: error: storage size of 'v' isn't known
2> /tmp/ffmpeg/libavutil/intfloat.h:43: error: `i' undeclared (first use in this function)
2> /tmp/ffmpeg/libavutil/intfloat.h:42: warning: unused variable `v'
2> /tmp/ffmpeg/libavutil/intfloat.h: At top level:
2> /tmp/ffmpeg/libavutil/intfloat.h:50: error: parse error before "av_float2int"
2> /tmp/ffmpeg/libavutil/intfloat.h:51: warning: return type defaults to `int'
2> /tmp/ffmpeg/libavutil/intfloat.h:51: warning: no previous prototype for 'av_float2int'
2> /tmp/ffmpeg/libavutil/intfloat.h: In function `av_float2int':
2> /tmp/ffmpeg/libavutil/intfloat.h:52: error: storage size of 'v' isn't known
2> /tmp/ffmpeg/libavutil/intfloat.h:52: warning: unused variable `v'
2> /tmp/ffmpeg/libavutil/intfloat.h: At top level:
2> /tmp/ffmpeg/libavutil/intfloat.h:60: error: parse error before "i"
2> /tmp/ffmpeg/libavutil/intfloat.h:61: warning: function declaration isn't a prototype
2> /tmp/ffmpeg/libavutil/intfloat.h: In function `av_int2double':
2> /tmp/ffmpeg/libavutil/intfloat.h:62: error: storage size of 'v' isn't known
2> /tmp/ffmpeg/libavutil/intfloat.h:63: error: `i' undeclared (first use in this function)
2> /tmp/ffmpeg/libavutil/intfloat.h:62: warning: unused variable `v'
2> /tmp/ffmpeg/libavutil/intfloat.h: At top level:
2> /tmp/ffmpeg/libavutil/intfloat.h:70: error: parse error before "av_double2int"
2> In file included from /tmp/ffmpeg/libavutil/libm.h:30,
2> from /tmp/ffmpeg/libavutil/internal.h:109,
2> from /tmp/ffmpeg/libavutil/common.h:379,
2> from /tmp/ffmpeg/libavutil/avutil.h:274,
2> from /tmp/ffmpeg/libavutil/log.h:25,
2> from /tmp/ffmpeg/libavdevice/lavfi.c:30:
2> /tmp/ffmpeg/libavutil/intfloat.h: At top level:/tmp/ffmpeg/libavutil/intfloat.h:71: warning: return type defaults to `int'
2> /tmp/ffmpeg/libavutil/intfloat.h:71: warning: no previous prototype for 'av_double2int'
2>
2> /tmp/ffmpeg/libavutil/intfloat.h: In function `av_double2int':
2> /tmp/ffmpeg/libavutil/intfloat.h:28: error: parse error before "uint32_t"/tmp/ffmpeg/libavutil/intfloat.h:72: error: storage size of 'v' isn't known
2> /tmp/ffmpeg/libavutil/intfloat.h:72: warning: unused variable `v'
2>
2> /tmp/ffmpeg/libavutil/intfloat.h:28: warning: no semicolon at end of struct or union
2> /tmp/ffmpeg/libavutil/intfloat.h:29: confused by earlier errors, bailing out
2> /tmp/ffmpeg/libavutil/intfloat.h:29: confused by earlier errors, bailing out
2> /tmp/ffmpeg/libavutil/intfloat.h:29: confused by earlier errors, bailing out
2> In file included from /tmp/ffmpeg/libavutil/avutil.h:277,
2> from /tmp/ffmpeg/libavutil/log.h:25,
2> from /tmp/ffmpeg/libavdevice/oss_audio.c:37:
2> /tmp/ffmpeg/libavutil/mathematics.h: At top level:
2> /tmp/ffmpeg/libavutil/mathematics.h:123: error: parse error before "a"
2> /tmp/ffmpeg/libavutil/mathematics.h:123: warning: function declaration isn't a prototype
2> In file included from /tmp/ffmpeg/libavutil/avutil.h:279,
2> from /tmp/ffmpeg/libavutil/log.h:25,
2> from /tmp/ffmpeg/libavdevice/oss_audio.c:37:
2> /tmp/ffmpeg/libavutil/intfloat_readwrite.h:29: error: parse error before "uint8_t"
2> /tmp/ffmpeg/libavutil/intfloat_readwrite.h:29: warning: no semicolon at end of struct or union
2> /tmp/ffmpeg/libavutil/intfloat_readwrite.h:30: warning: type defaults to `int' in declaration of `mantissa'
2> /tmp/ffmpeg/libavutil/intfloat_readwrite.h:30: warning: data definition has no type or storage class
2> /tmp/ffmpeg/libavutil/intfloat_readwrite.h:31: error: parse error before '}' token
2> /tmp/ffmpeg/libavutil/intfloat_readwrite.h:31: warning: type defaults to `int' in declaration of `AVExtFloat'
2> /tmp/ffmpeg/libavutil/intfloat_readwrite.h:31: warning: data definition has no type or storage class
2> /tmp/ffmpeg/libavutil/intfloat_readwrite.h:35: warning: type defaults to `int' in declaration of `AVExtFloat'
2> /tmp/ffmpeg/libavutil/intfloat_readwrite.h:35: error: parse error before "ext"
2> /tmp/ffmpeg/libavutil/intfloat_readwrite.h:35: warning: function declaration isn't a prototype
2> /tmp/ffmpeg/libavutil/intfloat_readwrite.h:38: error: parse error before "av_dbl2ext"
2> /tmp/ffmpeg/libavutil/intfloat_readwrite.h:38: warning: type defaults to `int' in declaration of `av_dbl2ext'
2> /tmp/ffmpeg/libavutil/intfloat_readwrite.h:38: warning: data definition has no type or storage class
2> In file included from /tmp/ffmpeg/libavutil/log.h:25,
2> from /tmp/ffmpeg/libavdevice/oss_audio.c:37:
2> /tmp/ffmpeg/libavutil/avutil.h: In function `av_x_if_null':
2> /tmp/ffmpeg/libavutil/avutil.h:288: error: `intptr_t' undeclared (first use in this function)
2> In file included from /tmp/ffmpeg/libavdevice/oss_audio.c:38:
2> /tmp/ffmpeg/libavutil/opt.h: At top level:
2> /tmp/ffmpeg/libavutil/opt.h:567: warning: type defaults to `int' in declaration of `uint8_t'
2> /tmp/ffmpeg/libavutil/opt.h:567: error: parse error before '*' token
2> /tmp/ffmpeg/libavutil/opt.h:567: warning: function declaration isn't a prototype
2> /tmp/ffmpeg/libavutil/opt.h:587: error: parse error before "uint8_t"
2> /tmp/ffmpeg/libavutil/opt.h:587: warning: function declaration isn't a prototype
2> In file included from /tmp/ffmpeg/libavcodec/avcodec.h:30,
2> from /tmp/ffmpeg/libavdevice/oss_audio.c:40:
2> /tmp/ffmpeg/libavutil/samplefmt.h:188: error: parse error before '*' token
2> /tmp/ffmpeg/libavutil/samplefmt.h:191: warning: function declaration isn't a prototype
2> /tmp/ffmpeg/libavutil/samplefmt.h:209: error: parse error before '*' token
2> /tmp/ffmpeg/libavutil/samplefmt.h:210: warning: function declaration isn't a prototype
2> /tmp/ffmpeg/libavutil/samplefmt.h:223: error: parse error before '*' token
2> /tmp/ffmpeg/libavutil/samplefmt.h:225: warning: function declaration isn't a prototype
2> /tmp/ffmpeg/libavutil/samplefmt.h:236: error: parse error before '*' token
2> /tmp/ffmpeg/libavutil/samplefmt.h:237: warning: function declaration isn't a prototype
2> In file included from /tmp/ffmpeg/libavcodec/avcodec.h:37,
2> from /tmp/ffmpeg/libavdevice/oss_audio.c:40:
2> /tmp/ffmpeg/libavutil/audioconvert.h:133: error: parse error before "av_get_channel_layout"
2> /tmp/ffmpeg/libavutil/audioconvert.h:133: warning: type defaults to `int' in declaration of `av_get_channel_layout'
2> /tmp/ffmpeg/libavutil/audioconvert.h:133: warning: data definition has no type or storage class
2> /tmp/ffmpeg/libavutil/audioconvert.h:142: error: parse error before "uint64_t"
2> /tmp/ffmpeg/libavutil/audioconvert.h:142: warning: function declaration isn't a prototype
2> /tmp/ffmpeg/libavutil/audioconvert.h:148: error: parse error before "uint64_t"
2> /tmp/ffmpeg/libavutil/audioconvert.h:148: warning: function declaration isn't a prototype
2> /tmp/ffmpeg/libavutil/audioconvert.h:153: error: parse error before "channel_layout"
2> /tmp/ffmpeg/libavutil/audioconvert.h:153: warning: function declaration isn't a prototype
2> /tmp/ffmpeg/libavutil/audioconvert.h:169: error: parse error before "channel_layout"
2> /tmp/ffmpeg/libavutil/audioconvert.h:170: warning: function declaration isn't a prototype
2> /tmp/ffmpeg/libavutil/audioconvert.h:175: error: parse error before "av_channel_layout_extract_channel"
2> /tmp/ffmpeg/libavutil/audioconvert.h:175: error: parse error before "channel_layout"
2> /tmp/ffmpeg/libavutil/audioconvert.h:175: warning: type defaults to `int' in declaration of `av_channel_layout_extract_channel'
2> /tmp/ffmpeg/libavutil/audioconvert.h:175: warning: function declaration isn't a prototype
2> /tmp/ffmpeg/libavutil/audioconvert.h:175: warning: data definition has no type or storage class
2> /tmp/ffmpeg/libavutil/audioc
-
Ok, the build system is definitely not ready… I will investigate on this as soon as possible.
In the meantime I'll provide you with binaries: which VS version do you target and which codecs do you want?
As for Linux, as these issues are Windows specific, it should be fine.
-
Thank you for your attention to my problem.I am working with VS 2010. My program should be able to play popular free formats like ogv,vp8 and desirable xvid, divx, h264, wmv... ffmpeg suits for my targets
-
During the past days I've tried to build sfeMovie with VS 2010 and I got the same issues as you due to the .NET framework 4.5 being installed. The point is I have several useful software programs that depend on this framework, which would be broken if I uninstalled .NET 4.5.
Thus my question is as follow: do you need to stay with VS 2010? is upgrading to VS 2012 or 2013 a possible option for you?
Ceylo
-
Hi!
Maximum possible version is vs2012 but preferably vs 2010. Thx.
P.S. I tried to delete framevork, it didn't help me...
-
Finally I got CMake to work with VS 2010, thanks to the second solution described here: http://stackoverflow.com/questions/10888391/error-link-fatal-error-lnk1123-failure-during-conversion-to-coff-file-inval
After renaming the file "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\cvtres.ex" everything went fine.
As for the binaries, have a look at the pm I sent :) .
-
Thank you very much for you attention for my issue and assistance in solving. In soon i will return to my project, when i will have result, i necessarily report to you. And again thx!!! :) :) :)
-
I'm using sfeMovie in a Linux Project with a mix of SFML and OpenGL.
I see that most of the examples with sfeMovie use a call to window.draw(movie); in order to display the texture to a window.
Our game engines code uses a call to getCurrentFrame to bind a texture from VRAM.
sf::Texture::bind(&movie.getCurrentFrame(), sf::Texture::Pixels);
glBindVertexArray(vao);
glDrawArrays(GL_QUADS, 0, 4);
glBindVertexArray(0);
sf::Texture::bind(NULL);
This works great and the video textures get put on our quad, but right now we are seeing a small memory leak that builds up after playing videos over and over again. Not sure if I need to somehow be manually deleting the texture.
Can anyone share examples of the proper way to use getCurrentFrame()? Or have suggestions for tracking down this leak while playing videos.
Thanks.
-
Isn't it the same as http://en.sfml-dev.org/forums/index.php?topic=3463.msg94353#msg94353 ?
-
I don't think it is the same as I have used the latest commit, specifically with the Rodian777 memory leak fixed (Commit on Nov 7th 2013)
I don't think I mentioned I'm using the ffmpeg binaries that come with sfeMovie.
I thought the difference here might be that I am not making an explicit call to window.draw(movie);
-
Hmmm ok.. can you provide a minimal example source that reproduces the issue? So that I can dig in it more easily :)
-
... suggestions for tracking down this leak while playing videos.
Tools like Valgrind (http://valgrind.org/), the various sanitizers provided by clang (http://clang.llvm.org/docs/index.html) and Electric Fence (http://en.m.wikipedia.org/wiki/Electric_Fence) can work wonders when tracking down leaks and other memory related bugs. Use them, always ;)
-
Ceylo,
Well the memory leak only seems to occur when I am using ATI Catalyst Proprietary graphics drivers on my Ubuntu set up. Reading around I understand that they seem to have a lot of problems.
I no longer have a memory leak when using NVIDIA graphics drivers with an NVIDIA card.
It doesn't appear to be a problem with SFEMovie. It's a lower level problem in my opinion. Thanks for your time.
Mark
-
Hmm ok… then good luck with ATI :/
-
I'm not if i should post this in the github issues or not... I'm trying to build sfeMovie with vs2013 and everything seems to be going fine until i run into this error.
Error 2 error : no acceptable ld found in $PATH C:\Libs\sfeMovie-master\build\FFmpeg\configure FFmpeg
Error 19 error LNK1104: cannot open file 'FFmpeg-binaries\lib\avformat.lib' C:\Libs\sfeMovie-master\build\LINK sfeMovie
and
I believe the second one occurs because FFmpeg is not being built. Btw im following the tutorial for the latest source from git. Is it possible to build with vs2013?
-
There should be no reason against VS2013 except that the build script is not flexible enough :)
Can you have a look at build_ffmpeg.sh, line 125 and followings? Then add 2 lines there to match the path to your VS2013 installation? It should just be a matter of replacing the number in the path with "12.0".