Excellent Work! I was completely disapointed by Suns JMF, so much problems, terrible bugs, incompatibilities. This is a fantastic job BUT I cannot use any custom Datasources. Please I beg you to do something fast about it:)
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I cannot understand why FObbs does not allow custom DataSources. I modifided the jmf.properties that comes along with fobbes and added my custom Datasources. The Manager's createDataSource method returned the correct custom Datasource and the createProcessor method also the correct custom Player. But then the processor could not be realized.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Custom datasources have been discussed previouly in this forum. As of version 0.3pre1 there is suppport in fobs for Custom DataSources, but you must be aware of whta it implies.
Let me explain you how Fobs4jmf works at its core. DataSources are not actually used. The only possible data source that works is the one provided in the com.omnividea namespace. This data source is simply a String container, becausse all the IO operations are performed in the C/C++ part of the library (using ffmpeg functions).
However, in the latest release I have included an experimental codec class (com.omnividea.media.codec.video.JavaDecoder) which only binds ffmpeg to the codec processes of JMF. IO operations, parser, etc is performed by JMF. I have had many issues using this class, mainly related to the difference in parsing between JMF and ffmpeg. It seems that ffmepg codecs expect to find the information in a partiucular way. Besides, I have only implemented the Video decoder, but not the Audio.
Let me know of your results if you try to use it. This could be a line of work to consider in future releases of fobs to provide better integration with the media framework.
Cheers!
Jos San Pedro Wandelmer
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I have used the custom data source and I think its looks good. I haven't noticed too many problems with it yet...Could you shed any light on what issues have been raised?
It was definatly needed and I welcome it.
James
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I'm so glad to hear from your good experience!!!! Indeed, there are two issues with the new codec class that allows to use custom datasources:
- Only video support
- Problem with some formats (JMF handles avi files in a way that ffmpeg doesn't like).
In addition, the code is not easily upgradeable as the list of codecs supported by the new class have is hardcoded and must be changed to work with the ffmpeg version used in each user's build.
Thanks for using Fobs!!! Remeber to report back any results!!
Cheers
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I have used some test XVID avi files and it seems to be working fine, do you mean uncompressed files are handled badly?
I have also run into some problems playing mpeg files here is what I get:
Fobs4JMF - Native shared library found
Little Endian
AVCODEC: Constructor
AVCODEC: setInputFormat
AVCODEC: setInputFormat
AVCODEC: getMatchingOutputFormats
AVCODEC: getMatchingOutputFormats
AVCODEC: setInputFormat
AVCODEC: getMatchingOutputFormats
AVCODEC: open
AVCODEC: init_decoding
Setting size - 320x240
Encoding: mpeg
Codec Found: 1
Codec opened...W=320 H=240
[mpeg1video @ 6B21A02C]ac-tex damaged at 6 9
[mpeg1video @ 6B21A02C]concealing 2147483647 errors
[mpeg1video @ 6B21A02C]Warning MVs not available
[mpeg1video @ 6B21A02C]MPEG motion vector out of boundary
[mpeg1video @ 6B21A02C]slice mismatch
[mpeg1video @ 6B21A02C]concealing 2147483647 errors
[mpeg1video @ 6B21A02C]ac-tex damaged at 15 9
[mpeg1video @ 6B21A02C]concealing 2147483647 errors
[mpeg1video @ 6B21A02C]Warning MVs not available
[mpeg1video @ 6B21A02C]ac-tex damaged at 3 1
[mpeg1video @ 6B21A02C]concealing 2147483647 errors
[mpeg1video @ 6B21A02C]invalid mb type in B Frame at 16 13
[mpeg1video @ 6B21A02C]concealing 2147483647 errors
[mpeg1video @ 6B21A02C]Warning MVs not available
[mpeg1video @ 6B21A02C]ac-tex damaged at 9 1
[mpeg1video @ 6B21A02C]concealing 2147483647 errors
[mpeg1video @ 6B21A02C]MPEG motion vector out of boundary
[mpeg1video @ 6B21A02C]MPEG motion vector out of boundary
[mpeg1video @ 6B21A02C]MPEG motion vector out of boundary
[mpeg1video @ 6B21A02C]ac-tex damaged at 13 0
[mpeg1video @ 6B21A02C]concealing 2147483647 errors
[mpeg1video @ 6B21A02C]ac-tex damaged at 19 1
[mpeg1video @ 6B21A02C]concealing 2147483647 errors
[mpeg1video @ 6B21A02C]ac-tex damaged at 19 10
[mpeg1video @ 6B21A02C]concealing 2147483647 errors
[mpeg1video @ 6B21A02C]MPEG motion vector out of boundary
[mpeg1video @ 6B21A02C]MPEG motion vector out of boundary
About the unsupported formats using the new codec class, it was mpeg format and not avi the one giving problems to me. It was long since the last time I used it! Sorry!
If you find anything else, let me know!
cheers
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Thanks for the reply Jose! I'll keep that in mind and congats again on a wonderful project.
Another question I have is has anyone done any testing on the Mac? I compiled fobs and ran some tests on 10.2 and the speed seems to be much slower, looks like a lot of dropped frames. I tested a DIVX encoded file, and a CVID encoded file. Has anyone had luck with anything else?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I do MacOS every time. Indeed, the project was fully implemented in a PB G4 1.25. About the performance issues, it seems to me they appear only when the video begins to play. After a few seconds, it plays smoothly. However, with a great number of videos I get good performace all the time. Again, this can be a java related issue due to the size of frame.
By the way, I use 10.3 and not 10.2. Maybe the JVM is not the same.
Cheers.
Jos San Pedro Wandelmer
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
The performance problems sound like you're taking a hit as the optimiser compiles java byte code to native. I would suggest that you use the -server flag - this uses different GC and a different optimisation strategy which seems to be more aggressive at compiling code at start up. As a result, it takes longer to start but when it does start much more is already native, so better overall performance.
Thank you so much for fobs4jmf - it has been a life-saver for me.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
thanks a lot for the tip. I've tried it in Mac but it doesn't seem to help too much. Maybe the mac Server VM implementation is not too good (java seems to run very slow on macs). I will try on windows and report back any news.
Thanks a lot!!!
Cheers.
Jose San Pedro Wandelmer
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Excellent Work! I was completely disapointed by Suns JMF, so much problems, terrible bugs, incompatibilities. This is a fantastic job BUT I cannot use any custom Datasources. Please I beg you to do something fast about it:)
I cannot understand why FObbs does not allow custom DataSources. I modifided the jmf.properties that comes along with fobbes and added my custom Datasources. The Manager's createDataSource method returned the correct custom Datasource and the createProcessor method also the correct custom Player. But then the processor could not be realized.
Hi there,
Custom datasources have been discussed previouly in this forum. As of version 0.3pre1 there is suppport in fobs for Custom DataSources, but you must be aware of whta it implies.
Let me explain you how Fobs4jmf works at its core. DataSources are not actually used. The only possible data source that works is the one provided in the com.omnividea namespace. This data source is simply a String container, becausse all the IO operations are performed in the C/C++ part of the library (using ffmpeg functions).
However, in the latest release I have included an experimental codec class (com.omnividea.media.codec.video.JavaDecoder) which only binds ffmpeg to the codec processes of JMF. IO operations, parser, etc is performed by JMF. I have had many issues using this class, mainly related to the difference in parsing between JMF and ffmpeg. It seems that ffmepg codecs expect to find the information in a partiucular way. Besides, I have only implemented the Video decoder, but not the Audio.
Let me know of your results if you try to use it. This could be a line of work to consider in future releases of fobs to provide better integration with the media framework.
Cheers!
Jos San Pedro Wandelmer
I have used the custom data source and I think its looks good. I haven't noticed too many problems with it yet...Could you shed any light on what issues have been raised?
It was definatly needed and I welcome it.
James
Hi James,
I'm so glad to hear from your good experience!!!! Indeed, there are two issues with the new codec class that allows to use custom datasources:
- Only video support
- Problem with some formats (JMF handles avi files in a way that ffmpeg doesn't like).
In addition, the code is not easily upgradeable as the list of codecs supported by the new class have is hardcoded and must be changed to work with the ffmpeg version used in each user's build.
Thanks for using Fobs!!! Remeber to report back any results!!
Cheers
I have used some test XVID avi files and it seems to be working fine, do you mean uncompressed files are handled badly?
I have also run into some problems playing mpeg files here is what I get:
Fobs4JMF - Native shared library found
Little Endian
AVCODEC: Constructor
AVCODEC: setInputFormat
AVCODEC: setInputFormat
AVCODEC: getMatchingOutputFormats
AVCODEC: getMatchingOutputFormats
AVCODEC: setInputFormat
AVCODEC: getMatchingOutputFormats
AVCODEC: open
AVCODEC: init_decoding
Setting size - 320x240
Encoding: mpeg
Codec Found: 1
Codec opened...W=320 H=240
[mpeg1video @ 6B21A02C]ac-tex damaged at 6 9
[mpeg1video @ 6B21A02C]concealing 2147483647 errors
[mpeg1video @ 6B21A02C]Warning MVs not available
[mpeg1video @ 6B21A02C]MPEG motion vector out of boundary
[mpeg1video @ 6B21A02C]slice mismatch
[mpeg1video @ 6B21A02C]concealing 2147483647 errors
[mpeg1video @ 6B21A02C]ac-tex damaged at 15 9
[mpeg1video @ 6B21A02C]concealing 2147483647 errors
[mpeg1video @ 6B21A02C]Warning MVs not available
[mpeg1video @ 6B21A02C]ac-tex damaged at 3 1
[mpeg1video @ 6B21A02C]concealing 2147483647 errors
[mpeg1video @ 6B21A02C]invalid mb type in B Frame at 16 13
[mpeg1video @ 6B21A02C]concealing 2147483647 errors
[mpeg1video @ 6B21A02C]Warning MVs not available
[mpeg1video @ 6B21A02C]ac-tex damaged at 9 1
[mpeg1video @ 6B21A02C]concealing 2147483647 errors
[mpeg1video @ 6B21A02C]MPEG motion vector out of boundary
[mpeg1video @ 6B21A02C]MPEG motion vector out of boundary
[mpeg1video @ 6B21A02C]MPEG motion vector out of boundary
[mpeg1video @ 6B21A02C]ac-tex damaged at 13 0
[mpeg1video @ 6B21A02C]concealing 2147483647 errors
[mpeg1video @ 6B21A02C]ac-tex damaged at 19 1
[mpeg1video @ 6B21A02C]concealing 2147483647 errors
[mpeg1video @ 6B21A02C]ac-tex damaged at 19 10
[mpeg1video @ 6B21A02C]concealing 2147483647 errors
[mpeg1video @ 6B21A02C]MPEG motion vector out of boundary
[mpeg1video @ 6B21A02C]MPEG motion vector out of boundary
mpeg1video @ 6B21A02C]mb incr damaged
[mpeg1video @ 6B21A02C]concealing 2147483647 errors
[mpeg1video @ 6B21A02C]invalid cbp at 17 12
[mpeg1video @ 6B21A02C]concealing 2147483647 errors
I wondered if this is something that has been seen before?
Thanks,
James
Hi James,
About the unsupported formats using the new codec class, it was mpeg format and not avi the one giving problems to me. It was long since the last time I used it! Sorry!
If you find anything else, let me know!
cheers
Thanks for the reply Jose! I'll keep that in mind and congats again on a wonderful project.
Another question I have is has anyone done any testing on the Mac? I compiled fobs and ran some tests on 10.2 and the speed seems to be much slower, looks like a lot of dropped frames. I tested a DIVX encoded file, and a CVID encoded file. Has anyone had luck with anything else?
Hi James,
I do MacOS every time. Indeed, the project was fully implemented in a PB G4 1.25. About the performance issues, it seems to me they appear only when the video begins to play. After a few seconds, it plays smoothly. However, with a great number of videos I get good performace all the time. Again, this can be a java related issue due to the size of frame.
By the way, I use 10.3 and not 10.2. Maybe the JVM is not the same.
Cheers.
Jos San Pedro Wandelmer
I hear you.
I am using a Dual 800 G4 with 10.2 with the 1.4.1. it seems to run much smoother than with 1.3. Under 1.3 everything appeared very choppy.
The performance problems sound like you're taking a hit as the optimiser compiles java byte code to native. I would suggest that you use the -server flag - this uses different GC and a different optimisation strategy which seems to be more aggressive at compiling code at start up. As a result, it takes longer to start but when it does start much more is already native, so better overall performance.
Thank you so much for fobs4jmf - it has been a life-saver for me.
Hi Matthew,
thanks a lot for the tip. I've tried it in Mac but it doesn't seem to help too much. Maybe the mac Server VM implementation is not too good (java seems to run very slow on macs). I will try on windows and report back any news.
Thanks a lot!!!
Cheers.
Jose San Pedro Wandelmer