Author Topic: SpaceX Falcon 9 v1.1 CRS-3 Splashdown Video Repair Task Thread  (Read 954520 times)

Offline arnezami

  • Full Member
  • **
  • Posts: 284
  • Liked: 262
  • Likes Given: 346
Approaching a 1,000 likes on the thread, can't be many threads on any topic that have reached that milestone!

There is a lot of intra-workinggroup liking though ;)
« Last Edit: 05/22/2014 12:05 PM by arnezami »

Offline SwissCheese

  • Full Member
  • *
  • Posts: 164
  • Liked: 249
  • Likes Given: 92
Okay, so I spent a not so little while on the p-frames following 52 and I got 1 (one!) frame fixed...and I don't even know if I did this right :))
It's really tedious, because there's almost no difference between frames 52 and 53, so there's almost no information for the lower part of the p-frame (which makes sense, but it makes it a lot more difficult to find markers...). In the lower part of the frame, you can just barely make out the shape of the rocket, but it took a while until I realized that :) I really wish the legs were extended at this point ;)
22:15:36982,30:15:-1,0:16:38358,25:17:-1,41:18:46765

Off-topic: Good luck to people who used to make a living out of repairing video files...I guess customers might no longer accept "a 50% chance of recovering one or two frames" as an answer after seeing the latest gifs from this video :))

That's quite good :)

A few general advices:
- There are usually easy-to-recover p-frames, it's better to begin with these ones, they will then give a reference for the harder-to-correct ones.
- Use the p-frames before and after to edit the actual one, it helps a lot, lots of moving features are at a very close position and help get the MB sequences at the right place.
- Before doing any correction, note the first bit position of all sequences of MB that look "good", then try to put them at the right position.
- If you are not 100% sure of a MB sequence, it's better to fill with 0:0:-1, as no change from the previous frame is better than a wrong change.
« Last Edit: 05/22/2014 11:48 AM by SwissCheese »

Offline AndyX

  • Full Member
  • ***
  • Posts: 386
  • Liked: 142
  • Likes Given: 350
Well done to all concerned. Great that Elon has recognized the great work by the NSF gang.

« Last Edit: 05/22/2014 10:46 AM by Chris Bergin »

Offline mhenderson

  • Member
  • Posts: 69
  • USA
  • Liked: 101
  • Likes Given: 18
My next input on frames 209-215 is attached.  My first submission on pFrames was shameful crap, please ignore it. In this set, frames 209-211 are decent, but it deteriorates pretty quickly after that.

1) @Asmegin - Thank you for the kind coaching. I have now used -1 in the pFrames to disable only single blocks then immediately resume at the next block. I have done only minor tweaking of luminance and color in the pFrames. Are there other tricks?

2) @Wronkview - By all means, lets pool our efforts. There is no I in TEAM. I will look at your stuff today / this evening (US eastern time).

3) This is more addictive than crack. I will be worthless at the office today.

4) The image appears to melt like crayons on the stove. Would it be worthwhile to set the initial iFrame with a "test pattern of horizontal black and grey bars then somehow correct the areas that should stay static?

Offline Untribium

  • Member
  • Posts: 32
  • Switzerland
  • Liked: 32
  • Likes Given: 78
Okay, so I spent a not so little while on the p-frames following 52 and I got 1 (one!) frame fixed...and I don't even know if I did this right :))
It's really tedious, because there's almost no difference between frames 52 and 53, so there's almost no information for the lower part of the p-frame (which makes sense, but it makes it a lot more difficult to find markers...). In the lower part of the frame, you can just barely make out the shape of the rocket, but it took a while until I realized that :) I really wish the legs were extended at this point ;)
22:15:36982,30:15:-1,0:16:38358,25:17:-1,41:18:46765

Off-topic: Good luck to people who used to make a living out of repairing video files...I guess customers might no longer accept "a 50% chance of recovering one or two frames" as an answer after seeing the latest gifs from this video :))

That's quite good :)

A few general advices:
- There are usually easy-to-recover p-frames, it's better to begin with these ones, they will then give a reference for the harder-to-correct ones.
- Use the p-frames before and after to edit the actual one, it helps a lot, lots of moving features are at a very close position and help get the MB sequences at the right place.
- Before doing any correction, note the first bit position of all sequences of MB that look "good", then try to put them at the right position.
- If you are not 100% sure of a MB sequence, it's better to fill with 0:0:-1, as no change from the previous frame is better than a wrong change.

Thanks :) I did most of what you're suggesting, but I guess I was too focused on getting this frame repaired as much as possible. Better to move on to the ones where there's actually something interesting happening :)) (then again, this is video footage of the soft-landing of a rocket stage, so every frame is showing something interesting ;) )
« Last Edit: 05/22/2014 03:42 PM by Untribium »

Offline michaelni

  • Member
  • Posts: 28
  • Liked: 23
  • Likes Given: 0
Hi all
ive added a new option to the custom ffmpeg on github,
-debug mb_pos_bruteforce
This will list all bitstream positions, start, end, size for any correctly decodeable MB.
With this you can quickly find a MB that ends at a specified position or even perform some statistical analysis on the start/end positions, maybe automating the finding of more likely valid chains

Example:
Quote
[mpeg4 @ 0x7f04c0001540] MB pos brute: F#:0, PTS:0, Start:511, End:646, Size:135, dQP:-2
[mpeg4 @ 0x7f04c0001540] MB pos brute: F#:0, PTS:0, Start:512, End:707, Size:195, dQP:0
[mpeg4 @ 0x7f04c0001540] MB pos brute: F#:0, PTS:0, Start:513, End:685, Size:172, dQP:0
[mpeg4 @ 0x7f04c0001540] MB pos brute: F#:0, PTS:0, Start:514, End:690, Size:176, dQP:0
[mpeg4 @ 0x7f04c0001540] MB pos brute: F#:0, PTS:0, Start:515, End:646, Size:131, dQP:0
[mpeg4 @ 0x7f04c0001540] MB pos brute: F#:0, PTS:0, Start:516, End:656, Size:140, dQP:0
[mpeg4 @ 0x7f04c0001540] MB pos brute: F#:0, PTS:0, Start:517, End:646, Size:129, dQP:0

Offline SwissCheese

  • Full Member
  • *
  • Posts: 164
  • Liked: 249
  • Likes Given: 92
To help everyone with the repair job on the p-frames, I wrote a small tutorial:

http://spacexlanding.wikispaces.com/Tutorial+p-frames

Feel free to add your own comments if you have well-working strategies to correct these images!

Offline arnezami

  • Full Member
  • **
  • Posts: 284
  • Liked: 262
  • Likes Given: 346
Hi all
ive added a new option to the custom ffmpeg on github,
-debug mb_pos_bruteforce
This will list all bitstream positions, start, end, size for any correctly decodeable MB.
With this you can quickly find a MB that ends at a specified position or even perform some statistical analysis on the start/end positions, maybe automating the finding of more likely valid chains

Example:
Quote
[mpeg4 @ 0x7f04c0001540] MB pos brute: F#:0, PTS:0, Start:511, End:646, Size:135, dQP:-2
[mpeg4 @ 0x7f04c0001540] MB pos brute: F#:0, PTS:0, Start:512, End:707, Size:195, dQP:0
[mpeg4 @ 0x7f04c0001540] MB pos brute: F#:0, PTS:0, Start:513, End:685, Size:172, dQP:0
[mpeg4 @ 0x7f04c0001540] MB pos brute: F#:0, PTS:0, Start:514, End:690, Size:176, dQP:0
[mpeg4 @ 0x7f04c0001540] MB pos brute: F#:0, PTS:0, Start:515, End:646, Size:131, dQP:0
[mpeg4 @ 0x7f04c0001540] MB pos brute: F#:0, PTS:0, Start:516, End:656, Size:140, dQP:0
[mpeg4 @ 0x7f04c0001540] MB pos brute: F#:0, PTS:0, Start:517, End:646, Size:129, dQP:0
Nice!

I think what would also be very useful is to able to tell ffmpeg only to decode either luminosity, chrom1 or chrom2. So either only the first 4 dc's are decoded or only the fifth or only the sixth.

Then we can add 3 checkboxes in the online version. That way you can much more clearly see where things go wrong colorwise or intensity wise. Without our eyes being districated by either the intensity or (one of) the two colors.

Offline mhenderson

  • Member
  • Posts: 69
  • USA
  • Liked: 101
  • Likes Given: 18
How do we download / install the tool from github? Are there instructions for installing that app on a Windows box? Do I need a Linux VM? On a scale of 1 to 10, I am a 2 in Linux.

@SwissCheese, @michaelni, @IainCole ... you guys rock ... the pFrame tutorial is just what I needed and the fundamental toolkit is powerful and growing.

I have been using the online tool, but really would benefit from the new bruteforce feature in the github app. It would be soooo much more efficient to use it as a menu of candidate blocks. Most blocks in the water and ship body seem to have a size of 50-110, so being able to see a list of POS values for valid blocks would really help.

Offline Chris Bergin

And that's the thread through the 200,000 visit mark!

Offline mhenderson

  • Member
  • Posts: 69
  • USA
  • Liked: 101
  • Likes Given: 18
Answering my own question:

You can run Ubuntu Linux from a USB stick or CD.
http://www.ubuntu.com/download/desktop/try-ubuntu-before-you-install

or if you prefer a VM and have sufficient hardware ...

Download and install VMWare Plus for Windows from
https://my.vmware.com/web/vmware/free#desktop_end_user_computing/vmware_player/6_0
(free for noncommercial use)

Download and install Ubuntu Linux on the VM from http://www.ubuntu.com/download/desktop

Download and install Custom FFmpeg. From the GIT repository at https://github.com/michaelni/FFmpeg/tree/spacexdebug1
Installation instructions for FFmpeg are here: http://forum.nasaspaceflight.com/index.php?topic=34597.msg1193442#msg1193442

System requirements for VMWare Plus:
"For a typical host system, we recommend that you have a 1 GHz or faster processor (2GHz recommended) and 1GB RAM minimum (2GB RAM recommended). You must have enough memory to run the host operating system, plus the memory required for each guest operating system and for applications on the host and guest. See your guest operating system and application documentation for their memory requirements. VMware Player requires approximately 150MB of disk space to install the application. - See more at: http://www.vmware.com/products/player/faqs.html#sthash.smDidWiW.dpuf"

I will give the USB approach a try tonight and publish instructions if it works / a dire warning to noobs if it is way over my head.


Offline Lourens

  • Full Member
  • *
  • Posts: 156
  • The Netherlands
  • Liked: 206
  • Likes Given: 304
How do we download / install the tool from github? Are there instructions for installing that app on a Windows box? Do I need a Linux VM? On a scale of 1 to 10, I am a 2 in Linux.

Ohh, I'm way late to the party, been really busy and I'd overlooked the thread :(. But it's not over yet fortunately :). I think it's possible to build FFmpeg on Windows, but I haven't used Windows in over a decade, so I would have no idea how.

Here's in the simplest possible terms how to do it on Linux though, specifically on Debian GNU/Linux or any derived version (e.g. Ubuntu or Linux Mint). I just did it like this on a Linux Mint Debian Edition laptop, but it should work fine in a VirtualBox VM as well. Compared to the install.txt file, this only covers installing FFmpeg, not using it, but it adds a few steps you'll need on a newly installed Linux machine.

I'm not 100% sure that I got everything in that respect, as I've got a lot of development tools already installed. If you get any error messages, PM me and we'll fix it and I'll amend the instructions here.

You're supposed to type the instructions highlighted in blue below into a terminal window, which you should be able to open from the menu, usually under Accessories. The part before the first dollar sign will already be there, so start with sudo on the first one.

First, install some software we'll need. This will ask you for your login password since it's a system administration function.

[email protected]:~$ sudo apt-get install git yasm build-essential

Then, we make a working directory and change into it

[email protected]:~$ mkdir spacex_landing_video
[email protected]:~$ cd spacex_landing_video


Now, we clone the Git repository. This will create a local copy of the modified FFmpeg source code. If you're doing this for the first time, it'll download about 100MB of data, but you'll be able to get only the changes next time Michael updates something, so that it will be much faster then.

[email protected]:~/spacex_landing_video$ git clone -b spacexdebug1 --depth 1 https://github.com/michaelni/FFmpeg.git FFmpeg-spacexdebug1

After the download is done, change into the newly created FFmpeg-spacexdebug1 directory:

[email protected]:~/spacex_landing_video$ cd FFmpeg-spacexdebug1

Now it's time to build it. First, we'll run the configure program, which will analyse your system and figure out whether everything needed is there, as well as how to build FFmpeg. If this gives any errors, there's probably a library missing from your system. Please PM (to avoid burying the thread in debug output) me the entire configure output, and we'll get it fixed.

[email protected]:~/spacex_landing_video/FFmpeg-spacexdebug1$ ./configure

If that completed successfully, you can build FFmpeg using

[email protected]:~/spacex_landing_video/FFmpeg-spacexdebug1$ make

This took about 10 minutes on my laptop. You should then be able to run the newly built FFmpeg using

[email protected]:~/spacex_landing_video/FFmpeg-spacexdebug1$ ./ffmpeg -version

Now, you can go and download the files from the wiki and play around with them. You'll probably want to put them into a different directory. To run your new ffmpeg from that directory, it's useful to add it to the PATH environment variable. You can then start it from any directory simply by typing ffmpeg (i.e. without the ./ in front). To change the PATH variable, do

[email protected]:~/spacex_landing_video/FFmpeg-spacexdebug1$ PATH=$HOME/spacex_landing_video/FFmpeg-spacexdebug1:$PATH

You'll have to run this last command once every time you open a new terminal window, which is a bit cumbersome. If you add it to the end of the file named .bashrc in your home directory, it'll run automatically every time you start a terminal window. Probably the easiest way to do that is by running

[email protected]:~$ echo -e '\nPATH=$HOME/spacex_landing_video/FFmpeg-spacexdebug1:$PATH\n' >>~/.bashrc

I hope that helps you get started.

Edit: got the wrong Git repository!
« Last Edit: 05/22/2014 05:53 PM by Lourens »

Offline morningdew76

  • Member
  • Posts: 11
  • McLean, VA
  • Liked: 12
  • Likes Given: 7
Just wanted to share the technique that I've been using to search for single and triple flipped bits-

This is a bash script looking for a single flipped bit between 8800 and 9100, specifically, I am trying to fix 40:03 on frame 52-
Quote
for i in {8800..9100} ; do ffmpeg.exe -threads 1 -debug mb_pos_size -err_detect ignore_err -s:0 704:480 -mmb X:76768:80,X:22120:80,X:$i:80,0:7:-2:-10:-10:-10:-10:8:-5,2:7:15506,9:7:-1,15:7:16391,17:7:-1, 28:7:16704,35:7:-2:-10:-10:-10:-10:8:-5,29:9:21074,34:9:-1,39:9:21626,5:28:-1,10:28:80196 -i iframe52.mpg4-img -f image2 img-%03d-$i.png 2> output-$i.txt ; done

The images are not important.. what I am looking for is any output text file that contains the text of 41:03:8999 , which appears to be a good position.  As such, grep the output text for 41:03:8999 .  No results were found, which tells me that a single bit flip here will not fix MB 40:03.

Here's the bash script for searching for one of the 80C0 triplets-
Quote
for i in {8800..9100} ; do ffmpeg.exe -threads 1 -debug mb_pos_size -err_detect ignore_err -s:0 704:480 -mmb X:76768:80,X:22120:80,X:$i:80,X:$(($i+14)):C0,0:7:-2:-10:-10:-10:-10:8:-5,2:7:15506, 9:7:-1,15:7:16391,17:7:-1,28:7:16704,35:7:-2:-10:-10:-10:-10:8:-5,29:9:21074,34:9:-1,39:9:21626,5:28:-1,10:28:80196 -i iframe52.mpg4-img -f image2 img-%03d-$i.png 2> output-$i.txt ; done

No results were found from that run either.

This setup is running in MinGW32 on Windows.
« Last Edit: 05/22/2014 05:04 PM by morningdew76 »

Offline Swatch

  • Full Member
  • **
  • Posts: 273
  • Official Aerospace Engineer as of June 13th, 2009
  • Cincinnati
    • ProjectApollo/NASSP: Virtual Systems and Flight Simulation of the Apollo Program
  • Liked: 28
  • Likes Given: 16
Congratulations to everybody, the tweet from Elon was WELL deserved.  And that was for just 2 seconds worth of video!
Ex-Rocket Scientist in Training, now Rocket Scientist!
M-F trying to make the world of the future a smaller place through expanding horizons...

Offline Chris Bergin

By the way, @SpaceX also retweeted the Elon message. :)
« Last Edit: 05/22/2014 06:04 PM by Chris Bergin »

So having an issue with the editor atm. Basically the new -3 instead of -1 thing doesn't seem to work... even though it works when I'm running it on my test rig....

Makes... no... sense.....

Offline arnezami

  • Full Member
  • **
  • Posts: 284
  • Liked: 262
  • Likes Given: 346
So having an issue with the editor atm. Basically the new -3 instead of -1 thing doesn't seem to work... even though it works when I'm running it on my test rig....

Makes... no... sense.....

Hi all
i updated github with some bugfixes and new features for P frames
-1 and -2 should now work like they do for I frames and allow messing with DC values
-3 results in a skiped block (this is what -1 was effectively before it worked so you have to replace -1 by -3 in old mmbs for P frames)
-4 makes it a inter MB with 1 motion vector

example:
24:10:-4:1:1
30:20:-3

@michaelni: can you figure this out for us?

It's seriously weird. I mean, I have it actually working when I run locally through the web app, but it doesn't work when I run EXACTLY the same command through the cmd prompt....

Might just sack this all off and re-write it in something I can run on linux =)


Online Shanuson

  • Full Member
  • **
  • Posts: 290
  • Liked: 197
  • Likes Given: 562
here is the "fixed" part_2, at least a version that produces also 19 p-frames now.

This leaves only 4 Pframes missing now , maybe I can get a version out tonight that has finally all frames.

Offline Lourens

  • Full Member
  • *
  • Posts: 156
  • The Netherlands
  • Liked: 206
  • Likes Given: 304
Found another bit flip in iframe 52: X:45038:80 relative to iframe52.mpg4-img improves the chroma in the bottom right corner. There are for sure a bunch of other bit flips that are causing the dark spot at bottom right, but it's difficult to find them. I have an idea for potentially automating this search though...maybe on the weekend.

Tags: