Hi all,

Ok - there's nothing like a BIG challenge to start off my exploration into programming. Given that I'm a complete newbie with more build errors than a builder having a bad day (bad pun!), what I'm really looking for is someone to hold my hand a bit and give me a 'janet and john' step-by-step explaination of how to do this project.

I know its asking a lot but if someone could take me under their wing? Thanks.

The project is to create an AVI media player. I need it to do much more, but this is the starting phase of the project. Language? I'm really not fussed. I know some VB and find Java difficult, also haven't used C# or C++ before, but hear that they are fast.

The play needs to be pretty slimline and only do certain things. I need a Windows form with no pull down menus. There needs to be a player timeline at the bottom of the form.

I know that a Dev C++ code snippet already exists on this site, but I couldn't get it to build in Visual Studio express C++ ed'n.

I'd want to step through the project and learn why each line of code is needed.

Once done, I need a counter to track the frame count, and for this to be stored as a variable.

Next, I need to actually use the pixels from the video, not just show it as I want to manipulate the actual video footage. Can this be done in standard libraries?

As an aside, I now have installed both the DirectX SDK and Intel's open computer vision library. Would any of these be helpful?

Finally, I need to connect the player to a pretty powerful SQL database containing vector information I will be using to alter the picels in each frame, seperately. Wish me luck! Naturally, this may have an impact on the language I use.

So that's the plan. Unfortunately, how I proceed from here is something I just don't have a clue. Not even sure which language to use.

Any helpers?

Best regards,

Matthew Bennett

Recommended Answers

All 24 Replies

Hi all,

Ok - there's nothing like a BIG challenge to start off my exploration into programming.

I know some VB and find Java difficult, also haven't used C# or C++ before, but hear that they are fast.

Why are you tackling a big project if you haven't used C++ at all and even find Java difficult?

>>Ok - there's nothing like a BIG challenge to start off my exploration into programming
HaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHa HaHaHaHaHaHaHaHaHaHaHaHa HaHaHaHaHaHaHaHaHaHaHaHa

Sorry, but I can't stop laughing! You don't know a thing about programming, yet you want to do WHAT! HaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHa

I really should move this into Geek's Lounge because its so funny -- you got to be joking, right? HaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHa HaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHa

commented: meh +0

I take offense to this.

Please retract your statement.

Simple - because I must.

I have been designing the application in question on paper (process and maths side) but recognise that I am weak on programming. That doesn't mean that I should not attempt it.

everyone gets heckled a bit from time to time, don't let it bother you.

Now, per your request regarding the program.

I will try to convince you that it is a bad idea for a beginner.

1st. 6month old babies don't learn to drive on the autobahn (take the analogy)
2nd. Notice EVERY tutorial on "Your very first [insert language here] script" is a "Hello World" and not Halo 3, there is a definite reason for that

You've gotta start somewhere, it's true, but try crawling (Hello World) before flying. Should you embark on this project anyway, you will find that you will not learn much (if anything) because without a good foundation in the basics and even intermediate concepts, it will be baffling.

Take the advice of someone who's been coding for 7 years that this is too much for you.

I can make an awful lot of very nice things on paper (like an anti-gravity machine for example), but that's essentially saying the same thing as "Hey I drew a picture!" the implementation is always the tricky part.

~J

commented: Well said +20

>>I take offense to this.
You are supposed to :) Would you start building a house if you don't know the difference between a hammer and a screwdriver ?

Start at the beginning, learn to crawl before you walk. Buy an introduction to c or c++ book and start reading from page 1. There are many suggestions for good books in one of the Read Me threads at beginning of this c++ board. Read those threads, buy the book, then begin studying. After a couple years of studying you will probably be ready to tackle that project of yours.

Simple - because I must.

I have been designing the application in question on paper (process and maths side) but recognise that I am weak on programming. That doesn't mean that I should not attempt it.

You're tackling a huge project without having the fundamentals. I'm not saying don't attempt it. I'm saying attempt it in stages. First program to attempt. Simply play a sound through the speakers. Second program. Build a simple GUI for the player. Third program. Have the GUI "do stuff" (i.e. play a sound when a button is pressed, control the volume of the sound when the user adjusts the volume bar). These three programs are not trivial and will be plenty challenging. They will take several attempts and may help help you ease into C++. But they're easier than the project you are talking about.

But before even doing stuff like that, I'd try to display "Hello World" to the console, then ask the user for his/her name and display it, then display it ten times, stuff like that, which is the traditional way to learn. Sure, keep the AVI player project in mind as the goal down the road, but I don't think it's realistic to tackle it as a first project.

Simple - because I must.

You must? Was it assigned to you for your job or something? I don't have any industry experience, but I'm pretty sure a decent boss wouldn't give a huge project like this to a single person with limited programming experience.

VernonDozier's suggestion of breaking up the program is smart - but you're going to have to do so much learning each step it might even be faster to just put the whole idea of your current project aside now, and work on getting the basics down.

Hang on there:-

I'm NOT a complete newbie, just a little out of touch.

In fact I learned BASIC in 1982, hacked 8-bit machine code in the mid 80's, focussed on networking during the 90's, ran my own web company in 2000 - 2004, have a PostGrad degree in rich media and used to build shockwave and flash sites and have been teaching IT for 8 years.

With that said I still consider myself a newbie and after coming fresh to Visual Studio Express only this month, have done 'Hello World' in each language and have just got my head around the differences.

For Java, which I am being told is the better language to try, I'm using Eclipse Ganymede IDE and have the hang of this.

So - not such a newbie.

Its just that I don't just want to frop an activeX control onto a form, but actually need to do some high level image processing on each frame. To this end I'm looking into Intel's Open Computer Vision library which is pretty hard going, but will do what I want to do. I just need to understand how to use it propertly.

Hope this helps clarify. And again - please help.

Best regards,

Matthew

Ok, ok - seems I've opened a can of worms here. Sorry for doing so.

The project is very complex and involes:

i) A media player which can perform shot detection and update a SQL database with shots and start and end frame numbers. (At this point it is likely that the AVI will have to be broken out into an image sequence, but I want to avoid this if at all possible)

ii) within a shot, on a selected frame, perform marked watershed detection to identify a shape, then put the selected shape into a septerate area, then break out a luminance table from the pixels used. (image will be in greyscale). (Here's an article on watershed detection using MATLAB and I have access to a copy of this if required: http://www.mathworks.com/products/image/demos.html?file=/products/demos/shipping/images/ipexwatershed.html)

ii) the greyscale map shown to the user as a 2-column table where the user can assign an RGB colour value to each grey. (see Walker effects colorize plugin for After Effects for an idea as to what this should look like).

And if any of you think I'm completely crazy (though you may be right), here's a paper I wrote some years ago detailing the process, but using existing third-party software:

http://colourisation.pbwiki.com/f/Colourisation%20GuideMJB_ver1_2.htm

I'll leave this with you. Please let me know that your thoughts are - is this doable and if it does need to be broken down, could I break it down in to further stages?

Best regards,

Matthew

>>And if any of you think I'm completely crazy
Yup. Remember, I didn't say that, you did :)

>> Please let me know that your thoughts are
I think we already have done. that.

Lol! Ok - I like your thinking and also get the point.

Ok - so I need to break it down into tiny chunks.

There's too much here and I'm too close to the project.

So - where do I start? Please help me to do this.

I must just also say to CoolGamer48 that its not a job but is a passion. You may even say 'religion' as this project has hounded me for the past 14 years.

Its taken this long for me to get this far.

Take a look at http://www.colourisation.net/ and see for yourself.

So - where do I start? Please help me to do this.

We have already done that too, and I'm not going to repeat what everyone has told you. Go back and read those posts yourself, then take what they said and run with it.

Ok - so I've rerun "Hello world!" in each progam language, then got to grips with the DirectX SDK and also Intel's open source CV library, but still no further forward.

If thats all your forum has for me then I'll leave, disappointed.

If thats all your forum has for me then I'll leave, disappointed.

Bye. We aren't here to write your programs for you. Only you can do that.

I learned BASIC in 1982, hacked 8-bit machine code in the mid 80's, focussed on networking during the 90's, ran my own web company in 2000 - 2004, have a PostGrad degree in rich media and used to build shockwave and flash sites and have been teaching IT for 8 years.

Then why the hell do you need help making a simple AVI player? After 30 years of computer and coding experience, shouldn't you now how?

commented: I disagree, He has already said hes not had any experience C++, but you can´t blame him for wanting to try something different. +0

Do you need us to lay out the steps of what you need to do? I thought you had already planned that? You want to know how to make a Windows looking GUI? Windows API or MFC, if you've bought it. Here's a quick tut on the API, don't know much about MFC. Do you want to know how to how to load an AVI file? A site I was referred to on this forum. Want to know how to interface with SQL databses? Google is your friend.

If thats all your forum has for me then I'll leave, disappointed.

This isn't a substitute for a search engine. You've given us a complex program, and are asking us what you should do. You've laid out the basics of what you want - decide to work on one of the components of your program and go look some stuff up. If you have more specific questions then, ask them. But unless someone has recently worked on an AVI loader that does the things you want and doesn't mind sharing, no one is going to go out and make one just to give you an idea of where to start.

Ok - hang on, I'll try to answer some of these if I may.

First, to Ancient Dragon, I came to this forum to seek advice for what is clearly a complex project. I'm not asking for people to write it for me and have found lots of code snippets already, but its all over the place, in different languages and not really doing what I want them to do. Advice from friends over here has been supportive but not really helped direct me to one language or approach over another. I must say that from a moderator, I expected less sniping or insulting behaviour and am sorry to have taken up your valuable time.

To Wiki Tiki, yes you'd think so, but I don't teach programming and these languages are alien to me, or at least as far as the project is concerned I can see which one would be the best to start with. Also, fine - making an AVI player isn't difficult, but I'm not talking about a simple windows form with a control here - I need to rasterise each frame and perform image analysis on the frame. This goes beyond what you'd be able to do from a normal simple AVI player. But no - I don't agree that after 30 years I'd know anything at all about programming because I've not had to. I teach different aspects of ICT - sorry.

And to coolgamer48, yes- - I do need someone to be able to look at the project and help me to realise what the steps are. These steps will be different depending on the approach, and language. I just realise that I don't want to pick the wrong language and then find myself having to start again from scratch because that particular language can't do what I want it to.

Ok - lets start with the media player then. I have a code snipper of how to make one in VB, but its not really helping. Videolan's VLC media player is open source and I can download the code and build it, but you know these things don't come with instruction manuals! :)

So please - less of the carping. I realise this is a weak area for me. Not everyone in the world is a programmer, but I am trying to learn. I'm asking for help. If your forum are not willing to then ok we'll leave it there, but please don't slate me for trying.

*sigh*

Okay, you want to know where to start. I've never written an AVI loader - but here are a couple of places to start (and I don't think where you start is going to be language specific).

  • Learn how to make a GUI. I gave you a link for a starting tutorial for the windows API. If you've got access to MFC (which I believe is just a wrapper for the API), then use that. Don't want to use the API? How about DirectX? A bit more complicated but you can make the GUI look like whatever you like. Rather use something a little more open source? OpenGL (same scenario as DirectX). You're not on Windows? What OS are you on? OpenGL still applies, but there may be other options. So, go out to Google, and try to make a GUI. If you run into specific problems, come back and tell us. Some examples: Can you guys show me the basic structure of a Windows application using the Windows API? better yet: I wrote this GUI (post the code) and it won't compile. Here are the errors: <errors here>. How can I fix it?
  • Learn to interface with SQL. Just Google it. You should get some APIs and tutorials for whatever language you want. Those should help you. If you then have specific questions about that, post them.
  • Learn to load an AVI file. This is a bit more difficult. I gave you link in my previous post that might be of some use, but learning about file formats isn't too easy (IMO). There might be some API that can help you, but I wouldn't bet on it. If you want people to help you with that, perhaps post questions like: Does anyone have some good references on the AVI video file format? I have the beginnings of an AVI loader but I don't know what step I should take next.
  • Learn to play an AVI file once you've loaded it. (to work on after above is completed)This will depend on how you chose to load it into your program. I can imagine this being a little bit more tackle-able assuming you have all the pixels for every frame of the video.

Ok. Thank you CoolGamer48 for the links. I will do as you say and go over this. Some of what I see in the tutorials seem to be obvious and I can't make the link over to my project at the moment.

I'll go away and play for a bit.

Again - thank you for your help.

Yups dude! You are right. Let your thought process need not be affected by what others think of your abilities.
All the best.
I am also trying something similar ;)

hey sorry to hurt your feelings but i dont think anyone would take you under their wing and teach you how to make a player, cause that takes days and more to finish unless someone already have done it. plus you know nothing about C++ i dont know how you event think you gonna do it okay i will help you... its simple type this into C++ softwere and youl get yourself a player.

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{

        cout << "Media Player " << endl;
        cout << "  " << endl;
        cout << " " << endl;
        cout << " Press Play To Play A Movie " << endl;
        cout << " " << endl;
        cout << " [PLAY] " << endl;
        cout << " Press Stop To Play A Movie " << endl;
        cout << " " << endl;
        cout << "[STOP] " << endl;
        cout << " "<< endl;
        cout << " "<< endl;
        cout << " "<< endl;
        cout << " "<< endl;
        cout << " "<< endl;
        cout << " "<< endl;
        cout << " "<< endl;
        cout << " "<< endl;
        cout << " "<< endl;
        cout << " "<< endl;
        cout << " "<< endl;
        cout << " "<< endl;
        cout << "Thank you for yousing my media player, hope you enjoyed "<< endl;



        cout << " "<< endl;

        system("PAUSE");
    return 0;

}
commented: This thread is 5 years old and has been solved? :S -1

Congratulations for the initiative. I think there's a long road ahead.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.