Log in

View Full Version : DVD Programming Toolkit


jfcarbel
12th September 2003, 06:32
I propose a common open source DVD Programming Toolkit out in sourceforge for all to use. I am surprised that this was never proposed, now that there is code out there to accomplish just about anything.

I am a Java programmer by day to earn a living but would like to write several fun DVD tools in my favorite at home programming language (Borlands Delphi). I know there is lots of sample code to use from DVD2AVI, vStrip, lib52a and other C++ DVD tools scattered here and there, but it would be great to have it all in one place. This way if a bug gets fixed in the toolkit than the fixes can filter down to all those DVD tools out there based on it.

I think this would inspire many creative DVD tools that we may not see from creative hobby programmers because of the large learning curve to learn all the nuiances of DVD programming.

I have wanted to write a DVD tool that could be used to create media clips that could be stored in a Movie/DVD organizer I am developing. Something so simple to use with a slider and a video window where users could create screenshots, extracted commentaries or audio snippets in mp3, extracted favorite scenes, etc. I could see someone using this tool to maybe even create a commentary mp3 that they could listen to on the train ride to work. All this could be done using 2-3 tools but to have a toolkit out there so others could develop more all-in-one tools for these tasks would be such a great benefit.

Some of the features of this DVD Programming Toolkit:

- DLL and ActiveX (COM) for calling from other languages like Delphi or VB

- video preview from VOB files, DVD from drive or selected title set
- displays title list (ifo parsing)
- video preview window can be resized
- can query the video preview window for current LBA value
- list of audio streams (stream type, length, bitrate, etc)
- ability to play a selected audio stream
- ability to extract part of audio stream to mp3 or other
- a cutter class that when passed in the VOB title and start/stop LBA sets can create clips from these. Can also join multiple clips. Output can be VOB, MPEG, mp3 (audio only), separate mpg/ac3 for authoring, divx. No recoding on the VOB clips or mpeg output clips.
- ability to frameserve extracted video clip as AVI (DVD2AVI functionality)
- ability to read in a bookmark file of LBAs and quickly seek to any of these
- can return a jpeg/bmp snapshot of current frame on GUI or from an LBA passed in
- video window very responsive to a slider (like DVDShrink)
- query DVD for general information on main title (chapter info, audio bitrate, time/length, etc)
- clips can be joined (all formats, including divx)
- DVD decryption can be handled via a plug-in DLL

All these toolkit functions would be wrapped into a Demo app. App can display all the titles for an inserted DVD and play the Video only or video+selected audio stream for any selected title. GUI similar to DVDShrink. User would have ability to create screenshot bitmaps, clips (i.e like DVDShrink ReAuthor), and mp3 audio clips. Ability to load bookmark chapter list files to quickly jump to favorite scenes in a video window.

Using this toolkit a fairly experienced programmer should be able to create just about any type tool they want. The goal of this project is inspire the quick and easy production of DVD tools and apps.

Any volunteers to help me setup a sourceforge project for this?

I encourage all comments and suggestions on this idea. Also comment on other features you think this toolkit should have. Comment if you think I am crazy to think this could be pulled off :)

If you have code you would be interested in donating then mention the details in a reply to this post.

Comments are welcome.

bilu
12th September 2003, 11:54
I'm not a programmer but want to learn.

Take a look at this thread:

http://forum.doom9.org/showthread.php?s=&threadid=60114

I concluded that using WxPython for non-CPU intensive code and C++ for the CPU intensive code would be the way to go, at least for me.

Advantages:

- Python: easier to learn and code than C++, cross-platform, object-oriented, easier to mantain ( others can read your code better);

- WxWindows API: cross-platform GUI coding, works in Windows, Unix and OS X almost without code changes, and looks integrated in the OS;

- C++: object-oriented, code can be cross-platform;


Alternatively you can just use WxWindows with C++ for GUI cross-platform tools to keep everything under a single language.


Bilu

jfcarbel
12th September 2003, 16:46
Python is more suited as a scripting language.

C++: object-oriented, code can be cross-platform;
"can" being the keyword here.

Try C++ and then try Delphi and let me know which one you like. Delphi hides alot of the complexities that you have to learn to code in C++. Delphi is also Object Oriented and based on Object Pascal syntax. Been programming since I was 12 in languages from Clipper, C++, Smalltalk, Java, and Delphi. I like Delphi the best for small apps or tools. I like Java for Business Enterprise software.

I like the fact that there is tons of 3rd party code out there to accomplish just about anything in Delphi. Want to add scripting (http://www.paxscript.com) to your app or want to ad some nice GUI controls (http://http://www.tmssoftware.com). Find free Delphi code here at the Delphi Super Page (http://delphi.icm.edu.pl/).

Its not surprising that lots of shareware apps are written in Delphi (dvdprofiler (http://www.dvdprofiler.com))

I was not thinking of cross platform since most of the DVD tools group here is Windows based or use Windows for there DVD needs. Also DirectX is windows based and makes programming with filters simple.

I was thinking of using DSPack (www.progdigy.com (http://www.progdigy.com)) which is a toolkit in Delphi for DirectX 9. They have a sample DVD Player (http://www.progdigy.com/download/binaries.zip) written using Delphi and DSPack that you can download. Another example of where Delphi has sample code libraries that make tasks more simpliar.

jfcarbel
16th September 2003, 20:33
Change of plans: This should be a C++ DLL

Now that I have thought about this more it makes sense that the DLL is done in C++, since a toolkit DLL could be used by any language and most of the existing source out there is C++.

The Demo app I talk about to help others learn how to use the toolkit could be written in 2 versions - C++ and Delphi. So I could satisfy my Delphi urges this way :)

I know this is not going to happen over night but I want to get something started on a common toolkit we could all share.
Your thoughts?

I am going to try an register a sourceforge project for it this weekend. I think the name "DVD Programming Toolkit" says it all but I am open to other suggestions.

Then I will start a thread on next week to begin discussing the published interface to this DLL and the functions it would contain.

Again, if you wish to allow me to use your code in this project then please comment here or email me. All opensource licensing rules and any special requests you have will of course be followed as instructed.

I am also wondering if maybe it makes sense to just start from scratch using DirectX 9.0 DirectShow instead of whats out there. Maybe the DirectShow is the better way to go with faster and more optimized code, plus you can use any filters out there and build graphs to do just about anything. It also allows us to include the feature to decrypt DVDs since that it built into DX9 DirectShow. Comments?

jfcarbel
23rd April 2005, 11:13
Is there any interest in getting a project started like this and are there people willing to help?

Here is a discussion thread on how I intend to technically make this work:
http://forum.doom9.org/showthread.php?s=&postid=644072#post644072

I don't have the technical skills to write this code, but I would be more than happy to manage the project.

I envision this being a DLL and an ActiveX (COM) component that can be used from other languages (i.e. Delphi, VB). But the core ToolKit code can be in C++ for speed.

I am thinking of having the DVD Decryption handled via a plug-in DLL, so developers basing DVD apps or tools off this toolkit don't have to worry about legal issues. I believe there are a few drivers or DLLs out there now that do this.

TFM_TheMask
25th April 2005, 20:17
If you use Delphi I want to help because I know very little about C++ (Only know how to read it a little).