Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion. Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules. |
7th November 2021, 04:37 | #61 | Link | |
Registered User
Join Date: Sep 2007
Posts: 5,346
|
Quote:
Interesting thought exercise. Have you tested it on real video compared to standard "deinterlacers", or more complex ones like QTGMC? Interpolation (I'm assuming motion vector interpolation, temporal midpoint of the halfpics) can yield weird results and artifacts, and when weaved (combined into full pic), they might not "fit" as you expected it to - resulting in aliasing issues . |
|
7th November 2021, 16:50 | #64 | Link | ||
Registered User
Join Date: Jul 2016
Location: Mansfield, Ohio (formerly San Jose, California)
Posts: 277
|
Quote:
Ah! Found it! http://avisynth.nl/index.php/QTGMC Yeah, yet another cosmetic. No, thanks. I'm a mechanical man. Quote:
Did this: 25fps[25pps{50hps[25hps[1+0}{1,[50hps[25hps[0+1}[50sps]] 'sing' to you? |
||
7th November 2021, 16:55 | #65 | Link |
Registered User
Join Date: Jul 2016
Location: Mansfield, Ohio (formerly San Jose, California)
Posts: 277
|
Nope. It (http://forum.doom9.org/showthread.ph...88#post1956788) still has a wide a CODE block at the end.
|
7th November 2021, 17:08 | #66 | Link | |
Registered User
Join Date: Jul 2016
Location: Mansfield, Ohio (formerly San Jose, California)
Posts: 277
|
Quote:
Code:
Hahaha... You have to put the texipix diagrams in CODE tags. It's the only way to format text as monospaced text in this forum. I wish so-called "rich text" would go away. PS: You know, I'm going to put all my posts in CODE tags and do the text wrapping, if not a texipix diagram, myself, manually. Last edited by markfilipak; 7th November 2021 at 17:14. |
|
7th November 2021, 19:05 | #67 | Link | |||||
Registered User
Join Date: Sep 2007
Posts: 5,346
|
I think I fixed the [code] tag
Quote:
If you start with AB as 2 frames , and (A/B) is the 50/50 weighted blend frame. If separating "normal" frame A to fields results in Aa, then separating blended frame (A/B) to fields gives (A/B)(a/b) . Quote:
I understand you can change the rate, do other things like add duplicates, but I consider those as additional steps afterwards - is that why ? But I already asked about that earlier Quote:
But I suspect problems in the end result. "The proof is in the pudding" - It's like a fun challenge. Post some tests and comparisons if you think it does a good job in some scenarios If I have time I'll try it later in avisynth or vapoursynth Quote:
Interlaced content ([sps]) sources are by definition starting with fields already. "50sps" has 50 different fields during motion. You have 1/2 vertical resolution to begin with, compared to a 50p content source. Your earlier interpolation example is "mechanically" discarding 1/2 the temporal resolution as a trade off - not necessarily an ideal tradeoff either. " that do deinterlacing to separate half pictures" - Deinterlacers are typically not used on Progressive content ("half pictures" would suggest progressive parent, right?) . Field matching and decimation (aka IVTC) are used to recover the original progressive "pictures". IVTC is not "deinterlacing". QTGMC is a mega function and smooths over the problems that other typical deinterlacers have (line flicker, aliasing, "marching ants" artifacts) . Usually the cosmetics are better than the alterative for interlaced content , but there is no one "best" at everything. Quote:
I've been using interpolation for many years. You can search my old posts and read about the categories of problems that you will definitely encounter. If you want samples, test videos, that illustrate the problems let me know. I use professional interpolation software too - this is an area I have a lot of experience with, including manual and semi-manual fixes to the problems. Newer approaches such as DAIN, RIFE can fix many of the MVTools2 problems in some scenes, but have some of their own issues too. Pros/cons. Combing methods yields the best results, but requires more user interaction, roto, masking Smaller blocks during interpolation often cause more problems with artifacts near edges. You can see this effect when varying blocksize from high to low. But more settings "options" are always welcome |
|||||
7th November 2021, 21:16 | #68 | Link | |
Registered User
Join Date: Sep 2007
Posts: 5,346
|
I think I finally "get" it walking through that example - The difference in how you use "frame" picture stream, and "interlace" combining the half pic pairs
Your "interlace" of the half pic pairs pps[hps is like "interleave" in avisynth or ffmpeg . They can be thought as of "side by side" . At that point they are still half height. The "framing" step is like "weave" in avisynth or ffmpeg , combining to to full height Quote:
Last edited by poisondeathray; 7th November 2021 at 21:23. |
|
7th November 2021, 21:22 | #69 | Link | ||||||||||||||||||||||
Registered User
Join Date: Jul 2016
Location: Mansfield, Ohio (formerly San Jose, California)
Posts: 277
|
Quote:
Frames (populated by samples having particular formats) --> Pictures (populated by pixels) --> Display (populated by pels) It's not me saying that. It's MPEG. To "visualize" pictures, think of raw (image) data in an editing pipeline. There aren't any frames there. There's just memory blocks. You (everyone) visualize pictures by what you see on a screen, but that's a rendered image (DAR=PAR*SAR stuff). I'm sure you've experienced times when, what you saw on a screen had unexpected proportions, especially with SD material from DVDs. Well, you were looking at a rendered image, not at a picture (as "picture" is defined by MPEG). So, what does a picture look like? What does data look like? What I do is imagine what the picture (data) would look like if it was a rendered image on a display (e.g. DAR=16:9) for SAR=1:1. That's as close to "seeing" what a picture looks like as you'll get. Quote:
exist within macroblocks, even in progressive frames. Just look at the structural differences between so-called "progressive" macroblocks and so- called "interleaved" -- MPEG doesn't use the word "interlaced" -- macroblocks. Aside: I can tell by your use of quotes that you are recognizing the shortcomings of the limited video vocabulary most people have. Quote:
to use your imagination and texipix. A good system of notation will help mental visualization, I think. Quote:
A picture is raw data. A frame is formatted data: pixel quads, blocks, macroblocks, slices, and surrounding metadata. What you see on a display is rendered frames. What a camera shoots is sample frames. Pictures are the unframed raw data in the realm between. Quote:
separating frames to fields creates a new stream of half-height frames. Well, a halfpic stream is just the raw version of that half-height stream, so it's as though you separated the original picture stream directly to a halfpic stream. It's what FFmpeg's 'separatefields' does: Code:
[A+a].. to [A][a].. \ \ \___ half picture \ \___ half picture \___ picture Quote:
without resorting to words. Here's a beginning list of notations that I'm sure of: Code:
25fps[1-24,24[24pps]] 25fps[24pps] via 1-of-24 picture repeat 25fps[23x(1+0)+2[2x[24pps]]] 25fps[24pps] via 1-to-2 picture repeat + 23-of-48 picture drop 25fps[24pps] 4% PAL speedup 25fps[50sps] 50sps interlace 25fps{50hps[1+0}{1,50hps[0+1}[50sps] comb-free 25fps[50sps] 30fps[1,3,2,5,4,7,6,8-12[1+0000[6x[50hps[25pps]]]]] 30fps[25pps] telecine via 3-2-3-2-2 pull-down 30fps[1-5,5[25pps[50sps]]] combed 30fps[50sps] via 1-of-5 picture repeat 30fps[2+00+3+00+2+00+3[96hps[2x[24pps]]]] 30fps[24pps] telecine via 2-3 pull-down 30fps[60sps] 60sps interlace 30fps{60hps[1+0}{1,60hps[0+1}[60sps] comb-free 30fps[60sps] 60fps[1+0[5x[24pps]]] 60fps[24pps] via 1-to-5 picture repeat + 2-to-1 picture drop 120fps[120pps[24pps]] 120fps[24pps] via 1-to-5 picture interpolation 120fps[5x[24pps]] 120fps[24pps] via 1-to-5 picture repeat Quote:
Quote:
because they misunderstood which "frame" was which: from an encoder or in a raw stream. When I read the MPEG specs I can tell which sections were written by who, well, not by name but by psychology/terminology. It seems the MPEG engineers agreed on one thing: Never to use the word "interlace". Quote:
Quote:
encoding. Quote:
Quote:
Quote:
Quote:
were based on the pipe-internal format rather than based on what everyone else would consider to be a picture. They thought it was a stupid question and that I'm a stupid person. Quote:
Quote:
Quote:
Quote:
Quote:
attempt to undo whatever has been done to pictures so as to turn them back into the best replica of the original pictures that I can recreate. I then prefer to convert them to 120pps and encode them 120fps. Quote:
Hmmm... motion v. no motion? What I think you're 'talking' about is layers in MPEG-4 AVC. I'm not interested in encoded formats. I don't anticipate the notation applying to encoded streams. Quote:
"FPS: sss.mmm (specified)" v. "sss.mmm (estimated)", and I single frame-step while looking for/at visual clues. I still don't know what you mean by " Scan type : Interlaced" and "Scan type : Progressive". Interlacing is what happens on a display screen or out of a decoder when producing a raw stream. Interlacing is how you make a picture from 2 progressive halfpics. It's also what you get when you interlace 2 scans to make a (1/60th second combed) picture. Oh! Oh! Idea! Is "Scan type" just a label? Does "Scan type : Interlaced" just mean "Progressive: No", and does "Scan type : Progressive" just mean "Progressive: Yes". If so, how does that jibe with the metadata? -- There's 2 of them in an MPEG-ES. Metadata: MPEG elemental stream -- sequence_extension -- -- offset 0005.4 : 'progressive_sequence' : '0' for picture or halfpics or scans; '1' for picture -- picture_coding_extension -- -- offset 0008.0 : 'progressive_frame' : '0' for halfpics or scans; '1' for picture |
||||||||||||||||||||||
7th November 2021, 22:05 | #70 | Link | ||
Registered User
Join Date: Jul 2016
Location: Mansfield, Ohio (formerly San Jose, California)
Posts: 277
|
Quote:
##pps : a stream of pictures at '##' pictures per second. ##hps : a stream of halfpics at '##' halfpics per second. ##sps : a stream of scans at '##' scans per second. They are serial streams, so "hps[pps" can be implemented: 'separatefields' "pps[hps" can be implemented: 'weave' "pps[sps" can be implemented: 'weave' "fps[hps" is interlace ('weave') and frame "fps[sps" is interlace ('weave') and frame "fps[pps" is frame, only Strides are also stream animals. masked strides: 1+0 -- inputs stream-sets of 2 stream thingies and outputs the 1st stream thingy (drops the 2nd stream thingy) 2+00+3+00+2+00+3 -- the infamous 2-3 pull-down: pass 2 stream thingies, drop 2 thingies, pass 3, drop 2, etc. Note: "2+00+3+00+2+00+3" is an abbreviation of "1+1+0+0+1+1+1+0+0+1+1+0+0+1+1+1" mapped strides: 1-24,24 -- map stream thingies 1 to 24 to the output stream followed by a copy of stream thingy #24 1,3,2,5,4,7,6,8-12 -- map groups of 12 stream thingies to the output stream in the following order: 1 3 2 5 4 7 6 8 9 10 11 12, as the stream thingies arrive. See? They're simple building blocks, like Legos. With simple building blocks plus a plan, I think we can build more efficient conversations. ...fewer words, more understanding. ...less frustration. ...fewer good people accused of being trolls. Last edited by markfilipak; 7th November 2021 at 22:21. |
||
7th November 2021, 22:14 | #71 | Link |
Registered User
Join Date: Jul 2016
Location: Mansfield, Ohio (formerly San Jose, California)
Posts: 277
|
Let me seal the deal via a familiar example...
A 30'fps telecine conveys how many pictures per second? 30'fps=30fps[2+00+3+00+2+00+3[96hps[2x[24pps]]]] 24 pictures per second... framed at 30 frames per second... played (via metadata) at 30000/1001 frames per second (i.e. 0.1% slow). |
7th November 2021, 22:26 | #72 | Link | |
Registered User
Join Date: Jul 2016
Location: Mansfield, Ohio (formerly San Jose, California)
Posts: 277
|
Quote:
|
|
7th November 2021, 22:48 | #73 | Link | |||||||||||||||
Registered User
Join Date: Sep 2007
Posts: 5,346
|
Quote:
Quote:
It affects vapoursynth too, because of frame props. A progressive content stream "encoded and flagged interlaced" will cause operations to use "interlaced" form by default. This can cause errors in some operations (e.g. resampling, converting to RGB (chroma planes are upsampled). e.g. if you take a screenshot, you will have chroma upsampling errors. You have to set the frame props to "progressive" override it. (It's similar to NLE's, you have to "interpret" the footage to progressive) Quote:
Quote:
Motion is required to properly analyze the highest frequency of image capture by the system setting. If I shoot 120fps with my gopro and wave the camera around, there are 120 different images per sec. If it's a static shot, you can't tell definitively Quote:
Quote:
But the double rate occurs by default, not single rate. It occurs with your flat panel TV too. eg. An interlaced content DVD will display as (interpolated) 59.94p, not 29.97p . A 1080i29.97 Sports channel will display as (interpolated) 1080p59.94p , not 1080p29.97 . Interlaced content streams, display as (interpolated) 50p or 59.94p on almost all consumer systems by default. The method in which they get there is a "double rate deinterlace" applied somewhere Quote:
Yadif in mode=1 convert fields to frames. You're starting with 1/2 spatial information anyways with interlaced content (each field has 1/2 vertical data compared to a 50p or 60p content source) You can keep the original scan lines in the recording - for example QTGMC has a "lossless" mode, where the original scan lines are preserved. That's usually not a good thing in terms of visual quality. The normal "cosmetics" applied make it look better Quote:
If you use interpolation algorithms that preserve the original frame set, then you can recover the original source frames too , similar to "lossless" deinterlacing. (Some interpolation algorithms resample all frames) Quote:
Double rate deinterlacers attempt that "replica" too. When you apply a double rate deinterlacer to a 25i content source, it becomes a spatially interpolated 50p version. 25i content can be thought as of starting with a 50p source, and discarding half the scan lines. Quote:
I purposely wrote you heard no such rumors for case 1 There is a method to this madness. I wrote about those situations to determine if the notation can convey "content" in a "sps" stream . Or if [sps] solely indicates "interlaced content". For example, many AVCHD cameras have "30p" mode too. It's a 29.97p content stream in 59.94 fields/s . Early gen ones were CCD, so interlaced scan sensor only. Knowing that info, what would you call "29.97p content stream in 59.94 fields/s" ? Quote:
|
|||||||||||||||
8th November 2021, 01:06 | #74 | Link | |
Registered User
Join Date: Sep 2007
Posts: 5,346
|
Quote:
If you have 2 separate interpolated halfpic streams each at "50hps" , then "interlace" (I'm assuming it means "interleave"), then "frame" (I'm assuming it's "weave") shouldn't the end result be 50fps ? How are you "interlacing" (combining) the 2 separate each 50pps interpolated half pic streams to result in 25pps ? If I "pretend" that "interlace" means "interleave" (and they are side by side), then interleaving 2 50hps streams should result in 100pps . If "framing" means "weave", then framing the 100pps stream would give 50fps[50pps |
|
8th November 2021, 01:08 | #75 | Link | |||||||||||||||||||||
Registered User
Join Date: Jul 2016
Location: Mansfield, Ohio (formerly San Jose, California)
Posts: 277
|
Quote:
they are interlaced (as a noun, verb, and adjective). Quote:
Quote:
what you 'say'? Quote:
Quote:
MVs. But there will still be a picture. What are you driving at? What am I not understanding? Quote:
The budget committee opted for cosmetics instead of a serious urban renewal plan. Quote:
Quote:
Quote:
Quote:
deinterlacer, then automobiles are speedometers. Quote:
enhance/emphasize some aspect that's already there at the cost of other aspects. Twiddling pixels that were shot (created) by camera is cosmetic. Creating new pixels/halfpics/pictures/fields/frames is mechanical. Quote:
interp algorithms that discard some originals. I don't use them. The TV may discard them (e.g. 120fps to a 60Hz TV), but they're still in the encode. Quote:
color graded, and the media master mastered, that's what I want. If the color grading or the mastering got screwed up, and I can fix it, then I want to fix it. If I can't fix it, then I'll consider cosmetics to make it the best I can knowing that I'll never obtain the original. Sometimes I get frustrated by the technology. If I have a scan-based TV source with mixed hard telecine segments (e.g. "Making Of" documentaries), then maybe the best I can do is bob. I could perfectly recover each segment, and I could create a scoreboard to do it, but a reliable comb detector would make automation possible. Do you know of any reliable comb detector I can try? It's the only thing I lack to make a one-click 'anything'-to-120fps script. Quote:
Quote:
Quote:
'nearest' siblings by 1/(2*|frame rate|) number of seconds. By the way, [hps] solely indicates that the image produced is the cinematographer's intended field of view with 2:1 proportions and is separated from its 'nearest' siblings by zero seconds on one 'side' and 1/|frame rate| number of seconds on the other 'side'. Quote:
Quote:
Does "Scan type : Interlaced" just mean "Progressive: No", and does "Scan type : Progressive" just mean "Progressive: Yes"? |
|||||||||||||||||||||
8th November 2021, 03:18 | #76 | Link | ||||||||||||||||||||||
Registered User
Join Date: Sep 2007
Posts: 5,346
|
Quote:
Not soft telecine - because soft telecine is encoded progressive, by definition. Yes is more to what I wrote - I wrote about "why it matters" a few pages back. Quote:
Quote:
"content" rate is what I'm driving at. The number of unique motion samples /s (during motion). ie. Does the notation differentiate between unique count of the "images" , for "interlaced" scan? Refer to the AVCHD CCD example below. Quote:
Quote:
Quote:
Quote:
During motion, one has 59.94 different fields in time represented in 59.94 fields. The 2nd has 29.97 different fields represented in 59.94 fields (ie. there are duplicate fields) . But they are both labelled 30'fps[60'sps] ? Quote:
Quote:
Quote:
I'm not entirely sure for mediainfo; it can be unreliable. It looks to multiple places, not just ES, but container flags as well, and there appears to be a priority level. If container indicates one thing, but ES indicates another, ususally container wins (not just for Scan Type, other entries too) . It depends on the situation - If it's a fresh ES out of the encoder, then progressive_frame flag=1(true) will usually cause medianfo to report Scan typerogressive. But I've seen examples (where I don't know the provenance, somebody uploads a sample of something) where progressive_frame flag=0(false) also is reported scan typerogressive . I usually put low weight on what mediainfo reports, or interpret it cautiously in the situation context with other information |
||||||||||||||||||||||
12th November 2021, 00:17 | #77 | Link |
Registered User
Join Date: Jul 2016
Location: Mansfield, Ohio (formerly San Jose, California)
Posts: 277
|
I've made a large compendium here: Video Notation, A Video Lingua Franca.
|
12th November 2021, 05:28 | #78 | Link | |||
Registered User
Join Date: Jul 2016
Location: Mansfield, Ohio (formerly San Jose, California)
Posts: 277
|
Quote:
Code:
MPEG elemental stream -- sequence_extension -- -- offset 0005.4 : 'progressive_sequence' : '0' "may contain both frame pictures and field pictures"; '1' "contains only progressive frame pictures". \ \ 20th Century Fox splash screen I've never seen a single case of this. RUNNING ON EMPTY THE DEAD ZONE 28 DAYS CHINATOWN -- picture_coding_extension -- -- offset 0008.0 : 'progressive_frame' : '0' for scans & hard telecined cinema or '1' for soft telecined cinema (24'fps[24pps]) \ \ 20th Century Fox splash screen RUNNING ON EMPTY 28 DAYS THE DEAD ZONE CHINATOWN Quote:
Quote:
Last edited by markfilipak; 12th November 2021 at 15:30. |
|||
19th August 2022, 22:43 | #79 | Link | |
Registered User
Join Date: Jul 2016
Location: Mansfield, Ohio (formerly San Jose, California)
Posts: 277
|
Quote:
Github repository Or skip github and go direct to the page here: The live page I would guess that it will take you about 15 minutes to read it. Please, it would be an honor to have your views. Enjoy, Mark Filipak. |
|
Thread Tools | Search this Thread |
Display Modes | |
|
|