pwnsweet
12th May 2011, 03:30
Hi,
I'm fairly new to the video editing/encoding world. I've spent many full days (yes, days) reading, testing and researching and have come a long way in a short time but it has become apparent that I am lacking a basic understanding of important topics such as what a 'filter' is, what a 'frameserver' is and why we need things like Haali Media Splitter (or what Haali Media Splitter even does, for that matter).
Why I've never learnt these things yet is unknown to me but it seems I've somehow accidentally sidestepped these issue on my way to learning about x264 and encoding and now my lack of understanding is hindering my progress in learning the more advanced aspects of x264 encoding. Not only that, it's also limiting my ability to actively participate in discussion on this forum for fear that I might say something that makes me look stupid or, more importantly, say something that somebody with even less knowledge takes as fact but turns out to be wrong. So, I'd like to go back and fill in the gaps to better grasp these concepts. I'm going to do this by just throwing questions out there. Some of these questions are going to be outright stupid, and you'll probably wonder how I even managed to encode a single video without knowing the answer to them but I feel I need to ask them to clear up the confusion I have.
1. My first question is, what is Haali Media Splitter and what does it do? I noticed that every time I open a .m2ts Blu-ray file in AVS script creator (MeGUI), I get a FFv and Haali Media Splitter icon in my system tray. I've no idea why the Haali Media Splitter icon is there or what it is doing.
2. Following on from the previous question, why is the FFv icon there? Is it because ffdshow is decoding the .m2ts file? Is it because ffmpeg mt is decoding the .m2ts file? Is ffdshow the same thing as ffmpeg mt? What exactly is ffdshow? What exactly is ffmpeg mt?
3. I use a program called Win7DSFilterTweaker_4_1. According to its description, it allows you to change the preferred DirectShow decoding filters in Windows 7. I'm running Windows 7, but I've no idea what DirectShow is or what a decoding filter is. I assume a decoding filter is what renders a h.264/mpeg2/vc-1/etc video stream. Is this correct?
4. No question here. The purpose of this entry is just to state that I understand the concept of containers, muxing and demuxing and serves to save repliers to this post the trouble of explaining what these concepts are. There will be more of these kinds of entries as I go along so that repliers don't repeat things I already know.
5. Regarding Win7DSFilterTweaker_4_1, what settings should I be using for H.264, VC-1 and MPEG-2? I have a DXVA compatible videocard (Nvidia GTX460) and so they are currently set to ffdshow DXVA for H.264 and VC-1 respectively and ffdshow for MPEG-2. Is this 'correct'? As I understand it, ffdshow DXVA means the video decoding (ie, video playback) is computed on the videocard, so does that mean that the only benefit to setting it to ffdshow DXVA for H.264 and VC-1 is there will be less load on the CPU?
6. I understand frame rates, the concept of 2:3 pulldown and the concept of ivtc. I understand the concepts of CPU cores, SMT and threads. I understand the difference between YUV/YV12 and RGB colour.
7. When I used to encode a .m2ts file (with a H.264 video stream) in MeGUI, I used to get a message at the 'enqueue' stage (ie, when adding the file to the encode queue) that said the source file was not in YUV colour format and MeGUI would ask me if I wanted to add the 'ConverttoYV12() function to the Avisynth script. What I don't understand is, when I used MediaInfo on the file it said that the colour space was already YUV (which is, correct me if I'm wrong, the same as YV12). If this is true, then why was MeGUI not getting the source in YUV colour?
This used to happen before I knew about Win7DSFilterTweaker_4_1, and I resolved this by using Win7DSFilterTweaker_4_1 to change the H.264 option from 'Microsoft' to 'ffdshow DXVA'. I noticed that, after I did this, the FFv icon started showing up in the system tray whenever I opened the .m2ts file. I can only assume this is because ffdshow was now being using to decode the video file, but why did making this change solve the ConverttoYV12() problem?
8. Following on from the previous question, I recently came across a Blu-ray that uses a YUV MPEG-2 video stream. When I added it to the MeGUI queue, I received the 'ConverttoYV12()' message again. So, as before, I used Win7DSFilterTweaker_4_1 to change the MPEG-2 option from 'Microsoft' to 'ffdshow' (there was no ffdshow DXVA option for some reason - anyone know why?). This time, however, it didn't fix the problem. I still received the ConverttoYV12() message.
9. What is a 'frameserver', what are some examples of frameservers, do I need a frameserver and which is the best frameserver?
10. Besides the amount of load a decoder puts on the CPU, is there any image quality differences between different video decoders? If so, which H.264/AVC video decoder produces the highest quality image?
11. Which is the better ffdshow decoder to accomplish my goal of encoding H.264/VC-1/MPEG-2 .m2ts Blu-ray files to H.264 mp4 files, libavcodec or ffmpeg, and why is one better than the other?
12. Would the answer to Q10. change if CoreAVC's H.264/AVC decoder was also considered? From what I understand, CoreAVC allows the use of a CUDA enabled videocard (such as my GTX460) to decode H.264 streams. I know that as an H.264 encoder CUDA is hopeless, but how does it fare as a H.264 decoder?
13. Is Haali Media Splitter the best demux filter for my goal outlined in Q11, or should I be using something else? If so, why, and if not, why not?
14. What's the difference between DXVA and CUDA and which is better for H.264/AVC decoding?
15. Regarding 'filter chains', what would be the ideal filter chain to use if the goal is to maximize image quality, assuming I was not limited to free software only and had a CUDA enabled GPU at my disposal?
16. I've recently learnt about indexing (only that it exists). According to MeGUI, whenever I try to index a .m2ts file it automatically sets DGindex as the default indexer, however FFMSindex is an alternative indexer that is selectable. What is the difference between these two indexers, how I can know which one I should use to index my file and why?
*note*
As an aside, I noticed that I have the option to perform color correction when using DGindex to index my file and that the preview window in MeGUI AVS script creator is darker than the source. Not 0-255 vs 16-235 brightness levels amounts, but definitely darker. Color correction is required to make the colors in the preview window match that of the source but the darker image phenomenon is independent of whether color correction is on or off and I cannot change it. However, I noticed that if I use FFMSindex to index the same stream (but muxed as an .mkv instead of .m2ts) there is no color correction option, the colors are the same in the preview window as they are in the source and the darkness issue is non-existant.
17. What does it mean when somebody says "It's even possible to directly copy the a/v stream of wmv when it is wrapped as an internal decoder"?
I will add more questions as I think of them. Thanks go out in advance to all people who respond to this post.
I'm fairly new to the video editing/encoding world. I've spent many full days (yes, days) reading, testing and researching and have come a long way in a short time but it has become apparent that I am lacking a basic understanding of important topics such as what a 'filter' is, what a 'frameserver' is and why we need things like Haali Media Splitter (or what Haali Media Splitter even does, for that matter).
Why I've never learnt these things yet is unknown to me but it seems I've somehow accidentally sidestepped these issue on my way to learning about x264 and encoding and now my lack of understanding is hindering my progress in learning the more advanced aspects of x264 encoding. Not only that, it's also limiting my ability to actively participate in discussion on this forum for fear that I might say something that makes me look stupid or, more importantly, say something that somebody with even less knowledge takes as fact but turns out to be wrong. So, I'd like to go back and fill in the gaps to better grasp these concepts. I'm going to do this by just throwing questions out there. Some of these questions are going to be outright stupid, and you'll probably wonder how I even managed to encode a single video without knowing the answer to them but I feel I need to ask them to clear up the confusion I have.
1. My first question is, what is Haali Media Splitter and what does it do? I noticed that every time I open a .m2ts Blu-ray file in AVS script creator (MeGUI), I get a FFv and Haali Media Splitter icon in my system tray. I've no idea why the Haali Media Splitter icon is there or what it is doing.
2. Following on from the previous question, why is the FFv icon there? Is it because ffdshow is decoding the .m2ts file? Is it because ffmpeg mt is decoding the .m2ts file? Is ffdshow the same thing as ffmpeg mt? What exactly is ffdshow? What exactly is ffmpeg mt?
3. I use a program called Win7DSFilterTweaker_4_1. According to its description, it allows you to change the preferred DirectShow decoding filters in Windows 7. I'm running Windows 7, but I've no idea what DirectShow is or what a decoding filter is. I assume a decoding filter is what renders a h.264/mpeg2/vc-1/etc video stream. Is this correct?
4. No question here. The purpose of this entry is just to state that I understand the concept of containers, muxing and demuxing and serves to save repliers to this post the trouble of explaining what these concepts are. There will be more of these kinds of entries as I go along so that repliers don't repeat things I already know.
5. Regarding Win7DSFilterTweaker_4_1, what settings should I be using for H.264, VC-1 and MPEG-2? I have a DXVA compatible videocard (Nvidia GTX460) and so they are currently set to ffdshow DXVA for H.264 and VC-1 respectively and ffdshow for MPEG-2. Is this 'correct'? As I understand it, ffdshow DXVA means the video decoding (ie, video playback) is computed on the videocard, so does that mean that the only benefit to setting it to ffdshow DXVA for H.264 and VC-1 is there will be less load on the CPU?
6. I understand frame rates, the concept of 2:3 pulldown and the concept of ivtc. I understand the concepts of CPU cores, SMT and threads. I understand the difference between YUV/YV12 and RGB colour.
7. When I used to encode a .m2ts file (with a H.264 video stream) in MeGUI, I used to get a message at the 'enqueue' stage (ie, when adding the file to the encode queue) that said the source file was not in YUV colour format and MeGUI would ask me if I wanted to add the 'ConverttoYV12() function to the Avisynth script. What I don't understand is, when I used MediaInfo on the file it said that the colour space was already YUV (which is, correct me if I'm wrong, the same as YV12). If this is true, then why was MeGUI not getting the source in YUV colour?
This used to happen before I knew about Win7DSFilterTweaker_4_1, and I resolved this by using Win7DSFilterTweaker_4_1 to change the H.264 option from 'Microsoft' to 'ffdshow DXVA'. I noticed that, after I did this, the FFv icon started showing up in the system tray whenever I opened the .m2ts file. I can only assume this is because ffdshow was now being using to decode the video file, but why did making this change solve the ConverttoYV12() problem?
8. Following on from the previous question, I recently came across a Blu-ray that uses a YUV MPEG-2 video stream. When I added it to the MeGUI queue, I received the 'ConverttoYV12()' message again. So, as before, I used Win7DSFilterTweaker_4_1 to change the MPEG-2 option from 'Microsoft' to 'ffdshow' (there was no ffdshow DXVA option for some reason - anyone know why?). This time, however, it didn't fix the problem. I still received the ConverttoYV12() message.
9. What is a 'frameserver', what are some examples of frameservers, do I need a frameserver and which is the best frameserver?
10. Besides the amount of load a decoder puts on the CPU, is there any image quality differences between different video decoders? If so, which H.264/AVC video decoder produces the highest quality image?
11. Which is the better ffdshow decoder to accomplish my goal of encoding H.264/VC-1/MPEG-2 .m2ts Blu-ray files to H.264 mp4 files, libavcodec or ffmpeg, and why is one better than the other?
12. Would the answer to Q10. change if CoreAVC's H.264/AVC decoder was also considered? From what I understand, CoreAVC allows the use of a CUDA enabled videocard (such as my GTX460) to decode H.264 streams. I know that as an H.264 encoder CUDA is hopeless, but how does it fare as a H.264 decoder?
13. Is Haali Media Splitter the best demux filter for my goal outlined in Q11, or should I be using something else? If so, why, and if not, why not?
14. What's the difference between DXVA and CUDA and which is better for H.264/AVC decoding?
15. Regarding 'filter chains', what would be the ideal filter chain to use if the goal is to maximize image quality, assuming I was not limited to free software only and had a CUDA enabled GPU at my disposal?
16. I've recently learnt about indexing (only that it exists). According to MeGUI, whenever I try to index a .m2ts file it automatically sets DGindex as the default indexer, however FFMSindex is an alternative indexer that is selectable. What is the difference between these two indexers, how I can know which one I should use to index my file and why?
*note*
As an aside, I noticed that I have the option to perform color correction when using DGindex to index my file and that the preview window in MeGUI AVS script creator is darker than the source. Not 0-255 vs 16-235 brightness levels amounts, but definitely darker. Color correction is required to make the colors in the preview window match that of the source but the darker image phenomenon is independent of whether color correction is on or off and I cannot change it. However, I noticed that if I use FFMSindex to index the same stream (but muxed as an .mkv instead of .m2ts) there is no color correction option, the colors are the same in the preview window as they are in the source and the darkness issue is non-existant.
17. What does it mean when somebody says "It's even possible to directly copy the a/v stream of wmv when it is wrapped as an internal decoder"?
I will add more questions as I think of them. Thanks go out in advance to all people who respond to this post.