Complex pulldown in ffmpeg possible?
Working on a research project with a color system that alernates between red (R) and green (G) pictures. We want to try different modes to bring that material to the digital domain. For this we want to try various pull-down sequences.
We want to project in 48fps or 60 fps.
- Triple each frame: R1 R1 R1 G1 G1 G1
- Triple each frame2: R1 G1 R1 G1 R1 G1
- Insert black frame: R1 R1 R1 G1 G1 G1 BL
- Insert black frame2: R1 R1 R1 G1 G1 BL R2 R2 G2 G2 G2 BL
- Insert black frame3: R1 G1 BL R2 G2 BL
- Insert black frame4: R1 R1 BL G1 G1 BL
...and so on
Is this possible in ffmpeg?
The alternative is to write a simple script to copy and renumber an image sequence. Obviously, it would be faster and simpler to do it all from within ffmpeg.
Thank you for your help.
ffmpeg
add a comment |
Working on a research project with a color system that alernates between red (R) and green (G) pictures. We want to try different modes to bring that material to the digital domain. For this we want to try various pull-down sequences.
We want to project in 48fps or 60 fps.
- Triple each frame: R1 R1 R1 G1 G1 G1
- Triple each frame2: R1 G1 R1 G1 R1 G1
- Insert black frame: R1 R1 R1 G1 G1 G1 BL
- Insert black frame2: R1 R1 R1 G1 G1 BL R2 R2 G2 G2 G2 BL
- Insert black frame3: R1 G1 BL R2 G2 BL
- Insert black frame4: R1 R1 BL G1 G1 BL
...and so on
Is this possible in ffmpeg?
The alternative is to write a simple script to copy and renumber an image sequence. Obviously, it would be faster and simpler to do it all from within ffmpeg.
Thank you for your help.
ffmpeg
add a comment |
Working on a research project with a color system that alernates between red (R) and green (G) pictures. We want to try different modes to bring that material to the digital domain. For this we want to try various pull-down sequences.
We want to project in 48fps or 60 fps.
- Triple each frame: R1 R1 R1 G1 G1 G1
- Triple each frame2: R1 G1 R1 G1 R1 G1
- Insert black frame: R1 R1 R1 G1 G1 G1 BL
- Insert black frame2: R1 R1 R1 G1 G1 BL R2 R2 G2 G2 G2 BL
- Insert black frame3: R1 G1 BL R2 G2 BL
- Insert black frame4: R1 R1 BL G1 G1 BL
...and so on
Is this possible in ffmpeg?
The alternative is to write a simple script to copy and renumber an image sequence. Obviously, it would be faster and simpler to do it all from within ffmpeg.
Thank you for your help.
ffmpeg
Working on a research project with a color system that alernates between red (R) and green (G) pictures. We want to try different modes to bring that material to the digital domain. For this we want to try various pull-down sequences.
We want to project in 48fps or 60 fps.
- Triple each frame: R1 R1 R1 G1 G1 G1
- Triple each frame2: R1 G1 R1 G1 R1 G1
- Insert black frame: R1 R1 R1 G1 G1 G1 BL
- Insert black frame2: R1 R1 R1 G1 G1 BL R2 R2 G2 G2 G2 BL
- Insert black frame3: R1 G1 BL R2 G2 BL
- Insert black frame4: R1 R1 BL G1 G1 BL
...and so on
Is this possible in ffmpeg?
The alternative is to write a simple script to copy and renumber an image sequence. Obviously, it would be faster and simpler to do it all from within ffmpeg.
Thank you for your help.
ffmpeg
ffmpeg
asked Dec 13 at 9:26
Martin
11
11
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
This can be carried out within ffmpeg using a series of filters.
There are two considerations:
a) change in number of frames, and
b) sequencing of frames
We'll use the fps filter to increase frame count. The filter will perform regular duplication to do this. Then the shuffleframes filter to achieve the sequence rearrangement required. We'll also need drawbox filter to generate black frames, if needed. These sequences can be output at any frame rate.
We will ingest each image sequence at 1 fps as this makes calculations simpler.
For
Triple each frame: R1 R1 R1 G1 G1 G1
ffmpeg -framerate 1 -i frames%04d.jpg -vf "fps=3,settb=AVTB,setpts=N/48/TB" -r 48 -y out.mp4
The fps filter is used to triple the count of each frame. Due to how the fps filter works, we need to reset the stream timebase to get enough resolution for the next steps. It is set to AVTB i.e. 1/1000000
seconds. Then the frames are renumbered at 1/48th seconds intervals. Finally, the output framerate is set to 48.
Triple each frame2: R1 G1 R1 G1 R1 G1
ffmpeg -framerate 1 -i frames%04d.jpg -vf "fps=3,shuffleframes=0 3 0 3 0 3,settb=AVTB,setpts=N/48/TB" -r 48 -y out.mp4
The fps triples each frame so 0 3 0 3 0 3
outputs six frames using the first copy of R1 and G1.
Insert black frame: R1 R1 R1 G1 G1 G1 BL
ffmpeg -framerate 1 -i frames%04d.jpg -vf "fps=4,shuffleframes=0 0 0 4 4 4 4 -1,drawbox=t=fill:enable=not(mod(n+1,7)),settb=AVTB,setpts=N/48/TB" -r 48 -y out.mp4
Here we quadruple each frame, then use shuffle to keep 7 out of each 8 frames, dropping the last one. Then use drawbox with enable
to make each 7th frame black (t=fill
draws a solid box. Default color is black).
Insert black frame2: R1 R1 R1 G1 G1 BL R2 R2 G2 G2 G2 BL
ffmpeg -framerate 1 -i frames%04d.jpg -vf "fps=3,shuffleframes=0 0 3 3 3 3:enable='mod(floor(n/6),2)',drawbox=t=fill:enable=not(mod(n+1,6)),settb=AVTB,setpts=N/48/TB" -r 48 -y out.mp4
Slightly trickier. shguffleframes only needs to applied to each alternate set of 6 frames. We use timeline editing i.e. enable
option for that.
Insert black frame3: R1 G1 BL R2 G2 BL
ffmpeg -framerate 1 -i frames%04d.jpg -vf "fps=2,shuffleframes=0 2 2 -1,drawbox=t=fill:enable=not(mod(n+1,3)),settb=AVTB,setpts=N/48/TB" -r 48 -y out.mp4
Double frame count and keep 3 frames, drawing black on 3rd and dropping 4th.
Insert black frame4: R1 R1 BL G1 G1 BL
ffmpeg -framerate 1 -i frames%04d.jpg -vf "fps=3,drawbox=t=fill:enable=not(mod(n+1,3)),settb=AVTB,setpts=N/48/TB" -r 48 -y out.mp4
Simple. Just make each 3rd frame black.
add a comment |
Not only is it possible, it is alsoe easy and efficient: Use a concat
file
Assuming you have your frames in r1.png, ... g2.png
etc. and 48 Hz (so a 20.8333.. ms timebase) a concat file fragment of
file 'r1.png'
duration 0.0625
file 'g1.png'
duration 0.0625
will give 3 red1 frames, then 3 green1 frames (20.8333..*3=62.5)
With these kinds of fragments you can build whatever sequence you need, then run
ffmpeg -i /path/to/concatfile -c.... /path/to/outfile
To create your clip.
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "3"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsuperuser.com%2fquestions%2f1383241%2fcomplex-pulldown-in-ffmpeg-possible%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
This can be carried out within ffmpeg using a series of filters.
There are two considerations:
a) change in number of frames, and
b) sequencing of frames
We'll use the fps filter to increase frame count. The filter will perform regular duplication to do this. Then the shuffleframes filter to achieve the sequence rearrangement required. We'll also need drawbox filter to generate black frames, if needed. These sequences can be output at any frame rate.
We will ingest each image sequence at 1 fps as this makes calculations simpler.
For
Triple each frame: R1 R1 R1 G1 G1 G1
ffmpeg -framerate 1 -i frames%04d.jpg -vf "fps=3,settb=AVTB,setpts=N/48/TB" -r 48 -y out.mp4
The fps filter is used to triple the count of each frame. Due to how the fps filter works, we need to reset the stream timebase to get enough resolution for the next steps. It is set to AVTB i.e. 1/1000000
seconds. Then the frames are renumbered at 1/48th seconds intervals. Finally, the output framerate is set to 48.
Triple each frame2: R1 G1 R1 G1 R1 G1
ffmpeg -framerate 1 -i frames%04d.jpg -vf "fps=3,shuffleframes=0 3 0 3 0 3,settb=AVTB,setpts=N/48/TB" -r 48 -y out.mp4
The fps triples each frame so 0 3 0 3 0 3
outputs six frames using the first copy of R1 and G1.
Insert black frame: R1 R1 R1 G1 G1 G1 BL
ffmpeg -framerate 1 -i frames%04d.jpg -vf "fps=4,shuffleframes=0 0 0 4 4 4 4 -1,drawbox=t=fill:enable=not(mod(n+1,7)),settb=AVTB,setpts=N/48/TB" -r 48 -y out.mp4
Here we quadruple each frame, then use shuffle to keep 7 out of each 8 frames, dropping the last one. Then use drawbox with enable
to make each 7th frame black (t=fill
draws a solid box. Default color is black).
Insert black frame2: R1 R1 R1 G1 G1 BL R2 R2 G2 G2 G2 BL
ffmpeg -framerate 1 -i frames%04d.jpg -vf "fps=3,shuffleframes=0 0 3 3 3 3:enable='mod(floor(n/6),2)',drawbox=t=fill:enable=not(mod(n+1,6)),settb=AVTB,setpts=N/48/TB" -r 48 -y out.mp4
Slightly trickier. shguffleframes only needs to applied to each alternate set of 6 frames. We use timeline editing i.e. enable
option for that.
Insert black frame3: R1 G1 BL R2 G2 BL
ffmpeg -framerate 1 -i frames%04d.jpg -vf "fps=2,shuffleframes=0 2 2 -1,drawbox=t=fill:enable=not(mod(n+1,3)),settb=AVTB,setpts=N/48/TB" -r 48 -y out.mp4
Double frame count and keep 3 frames, drawing black on 3rd and dropping 4th.
Insert black frame4: R1 R1 BL G1 G1 BL
ffmpeg -framerate 1 -i frames%04d.jpg -vf "fps=3,drawbox=t=fill:enable=not(mod(n+1,3)),settb=AVTB,setpts=N/48/TB" -r 48 -y out.mp4
Simple. Just make each 3rd frame black.
add a comment |
This can be carried out within ffmpeg using a series of filters.
There are two considerations:
a) change in number of frames, and
b) sequencing of frames
We'll use the fps filter to increase frame count. The filter will perform regular duplication to do this. Then the shuffleframes filter to achieve the sequence rearrangement required. We'll also need drawbox filter to generate black frames, if needed. These sequences can be output at any frame rate.
We will ingest each image sequence at 1 fps as this makes calculations simpler.
For
Triple each frame: R1 R1 R1 G1 G1 G1
ffmpeg -framerate 1 -i frames%04d.jpg -vf "fps=3,settb=AVTB,setpts=N/48/TB" -r 48 -y out.mp4
The fps filter is used to triple the count of each frame. Due to how the fps filter works, we need to reset the stream timebase to get enough resolution for the next steps. It is set to AVTB i.e. 1/1000000
seconds. Then the frames are renumbered at 1/48th seconds intervals. Finally, the output framerate is set to 48.
Triple each frame2: R1 G1 R1 G1 R1 G1
ffmpeg -framerate 1 -i frames%04d.jpg -vf "fps=3,shuffleframes=0 3 0 3 0 3,settb=AVTB,setpts=N/48/TB" -r 48 -y out.mp4
The fps triples each frame so 0 3 0 3 0 3
outputs six frames using the first copy of R1 and G1.
Insert black frame: R1 R1 R1 G1 G1 G1 BL
ffmpeg -framerate 1 -i frames%04d.jpg -vf "fps=4,shuffleframes=0 0 0 4 4 4 4 -1,drawbox=t=fill:enable=not(mod(n+1,7)),settb=AVTB,setpts=N/48/TB" -r 48 -y out.mp4
Here we quadruple each frame, then use shuffle to keep 7 out of each 8 frames, dropping the last one. Then use drawbox with enable
to make each 7th frame black (t=fill
draws a solid box. Default color is black).
Insert black frame2: R1 R1 R1 G1 G1 BL R2 R2 G2 G2 G2 BL
ffmpeg -framerate 1 -i frames%04d.jpg -vf "fps=3,shuffleframes=0 0 3 3 3 3:enable='mod(floor(n/6),2)',drawbox=t=fill:enable=not(mod(n+1,6)),settb=AVTB,setpts=N/48/TB" -r 48 -y out.mp4
Slightly trickier. shguffleframes only needs to applied to each alternate set of 6 frames. We use timeline editing i.e. enable
option for that.
Insert black frame3: R1 G1 BL R2 G2 BL
ffmpeg -framerate 1 -i frames%04d.jpg -vf "fps=2,shuffleframes=0 2 2 -1,drawbox=t=fill:enable=not(mod(n+1,3)),settb=AVTB,setpts=N/48/TB" -r 48 -y out.mp4
Double frame count and keep 3 frames, drawing black on 3rd and dropping 4th.
Insert black frame4: R1 R1 BL G1 G1 BL
ffmpeg -framerate 1 -i frames%04d.jpg -vf "fps=3,drawbox=t=fill:enable=not(mod(n+1,3)),settb=AVTB,setpts=N/48/TB" -r 48 -y out.mp4
Simple. Just make each 3rd frame black.
add a comment |
This can be carried out within ffmpeg using a series of filters.
There are two considerations:
a) change in number of frames, and
b) sequencing of frames
We'll use the fps filter to increase frame count. The filter will perform regular duplication to do this. Then the shuffleframes filter to achieve the sequence rearrangement required. We'll also need drawbox filter to generate black frames, if needed. These sequences can be output at any frame rate.
We will ingest each image sequence at 1 fps as this makes calculations simpler.
For
Triple each frame: R1 R1 R1 G1 G1 G1
ffmpeg -framerate 1 -i frames%04d.jpg -vf "fps=3,settb=AVTB,setpts=N/48/TB" -r 48 -y out.mp4
The fps filter is used to triple the count of each frame. Due to how the fps filter works, we need to reset the stream timebase to get enough resolution for the next steps. It is set to AVTB i.e. 1/1000000
seconds. Then the frames are renumbered at 1/48th seconds intervals. Finally, the output framerate is set to 48.
Triple each frame2: R1 G1 R1 G1 R1 G1
ffmpeg -framerate 1 -i frames%04d.jpg -vf "fps=3,shuffleframes=0 3 0 3 0 3,settb=AVTB,setpts=N/48/TB" -r 48 -y out.mp4
The fps triples each frame so 0 3 0 3 0 3
outputs six frames using the first copy of R1 and G1.
Insert black frame: R1 R1 R1 G1 G1 G1 BL
ffmpeg -framerate 1 -i frames%04d.jpg -vf "fps=4,shuffleframes=0 0 0 4 4 4 4 -1,drawbox=t=fill:enable=not(mod(n+1,7)),settb=AVTB,setpts=N/48/TB" -r 48 -y out.mp4
Here we quadruple each frame, then use shuffle to keep 7 out of each 8 frames, dropping the last one. Then use drawbox with enable
to make each 7th frame black (t=fill
draws a solid box. Default color is black).
Insert black frame2: R1 R1 R1 G1 G1 BL R2 R2 G2 G2 G2 BL
ffmpeg -framerate 1 -i frames%04d.jpg -vf "fps=3,shuffleframes=0 0 3 3 3 3:enable='mod(floor(n/6),2)',drawbox=t=fill:enable=not(mod(n+1,6)),settb=AVTB,setpts=N/48/TB" -r 48 -y out.mp4
Slightly trickier. shguffleframes only needs to applied to each alternate set of 6 frames. We use timeline editing i.e. enable
option for that.
Insert black frame3: R1 G1 BL R2 G2 BL
ffmpeg -framerate 1 -i frames%04d.jpg -vf "fps=2,shuffleframes=0 2 2 -1,drawbox=t=fill:enable=not(mod(n+1,3)),settb=AVTB,setpts=N/48/TB" -r 48 -y out.mp4
Double frame count and keep 3 frames, drawing black on 3rd and dropping 4th.
Insert black frame4: R1 R1 BL G1 G1 BL
ffmpeg -framerate 1 -i frames%04d.jpg -vf "fps=3,drawbox=t=fill:enable=not(mod(n+1,3)),settb=AVTB,setpts=N/48/TB" -r 48 -y out.mp4
Simple. Just make each 3rd frame black.
This can be carried out within ffmpeg using a series of filters.
There are two considerations:
a) change in number of frames, and
b) sequencing of frames
We'll use the fps filter to increase frame count. The filter will perform regular duplication to do this. Then the shuffleframes filter to achieve the sequence rearrangement required. We'll also need drawbox filter to generate black frames, if needed. These sequences can be output at any frame rate.
We will ingest each image sequence at 1 fps as this makes calculations simpler.
For
Triple each frame: R1 R1 R1 G1 G1 G1
ffmpeg -framerate 1 -i frames%04d.jpg -vf "fps=3,settb=AVTB,setpts=N/48/TB" -r 48 -y out.mp4
The fps filter is used to triple the count of each frame. Due to how the fps filter works, we need to reset the stream timebase to get enough resolution for the next steps. It is set to AVTB i.e. 1/1000000
seconds. Then the frames are renumbered at 1/48th seconds intervals. Finally, the output framerate is set to 48.
Triple each frame2: R1 G1 R1 G1 R1 G1
ffmpeg -framerate 1 -i frames%04d.jpg -vf "fps=3,shuffleframes=0 3 0 3 0 3,settb=AVTB,setpts=N/48/TB" -r 48 -y out.mp4
The fps triples each frame so 0 3 0 3 0 3
outputs six frames using the first copy of R1 and G1.
Insert black frame: R1 R1 R1 G1 G1 G1 BL
ffmpeg -framerate 1 -i frames%04d.jpg -vf "fps=4,shuffleframes=0 0 0 4 4 4 4 -1,drawbox=t=fill:enable=not(mod(n+1,7)),settb=AVTB,setpts=N/48/TB" -r 48 -y out.mp4
Here we quadruple each frame, then use shuffle to keep 7 out of each 8 frames, dropping the last one. Then use drawbox with enable
to make each 7th frame black (t=fill
draws a solid box. Default color is black).
Insert black frame2: R1 R1 R1 G1 G1 BL R2 R2 G2 G2 G2 BL
ffmpeg -framerate 1 -i frames%04d.jpg -vf "fps=3,shuffleframes=0 0 3 3 3 3:enable='mod(floor(n/6),2)',drawbox=t=fill:enable=not(mod(n+1,6)),settb=AVTB,setpts=N/48/TB" -r 48 -y out.mp4
Slightly trickier. shguffleframes only needs to applied to each alternate set of 6 frames. We use timeline editing i.e. enable
option for that.
Insert black frame3: R1 G1 BL R2 G2 BL
ffmpeg -framerate 1 -i frames%04d.jpg -vf "fps=2,shuffleframes=0 2 2 -1,drawbox=t=fill:enable=not(mod(n+1,3)),settb=AVTB,setpts=N/48/TB" -r 48 -y out.mp4
Double frame count and keep 3 frames, drawing black on 3rd and dropping 4th.
Insert black frame4: R1 R1 BL G1 G1 BL
ffmpeg -framerate 1 -i frames%04d.jpg -vf "fps=3,drawbox=t=fill:enable=not(mod(n+1,3)),settb=AVTB,setpts=N/48/TB" -r 48 -y out.mp4
Simple. Just make each 3rd frame black.
answered Dec 13 at 13:12
Gyan
14.4k21644
14.4k21644
add a comment |
add a comment |
Not only is it possible, it is alsoe easy and efficient: Use a concat
file
Assuming you have your frames in r1.png, ... g2.png
etc. and 48 Hz (so a 20.8333.. ms timebase) a concat file fragment of
file 'r1.png'
duration 0.0625
file 'g1.png'
duration 0.0625
will give 3 red1 frames, then 3 green1 frames (20.8333..*3=62.5)
With these kinds of fragments you can build whatever sequence you need, then run
ffmpeg -i /path/to/concatfile -c.... /path/to/outfile
To create your clip.
add a comment |
Not only is it possible, it is alsoe easy and efficient: Use a concat
file
Assuming you have your frames in r1.png, ... g2.png
etc. and 48 Hz (so a 20.8333.. ms timebase) a concat file fragment of
file 'r1.png'
duration 0.0625
file 'g1.png'
duration 0.0625
will give 3 red1 frames, then 3 green1 frames (20.8333..*3=62.5)
With these kinds of fragments you can build whatever sequence you need, then run
ffmpeg -i /path/to/concatfile -c.... /path/to/outfile
To create your clip.
add a comment |
Not only is it possible, it is alsoe easy and efficient: Use a concat
file
Assuming you have your frames in r1.png, ... g2.png
etc. and 48 Hz (so a 20.8333.. ms timebase) a concat file fragment of
file 'r1.png'
duration 0.0625
file 'g1.png'
duration 0.0625
will give 3 red1 frames, then 3 green1 frames (20.8333..*3=62.5)
With these kinds of fragments you can build whatever sequence you need, then run
ffmpeg -i /path/to/concatfile -c.... /path/to/outfile
To create your clip.
Not only is it possible, it is alsoe easy and efficient: Use a concat
file
Assuming you have your frames in r1.png, ... g2.png
etc. and 48 Hz (so a 20.8333.. ms timebase) a concat file fragment of
file 'r1.png'
duration 0.0625
file 'g1.png'
duration 0.0625
will give 3 red1 frames, then 3 green1 frames (20.8333..*3=62.5)
With these kinds of fragments you can build whatever sequence you need, then run
ffmpeg -i /path/to/concatfile -c.... /path/to/outfile
To create your clip.
answered Dec 13 at 9:54
Eugen Rieck
9,63522127
9,63522127
add a comment |
add a comment |
Thanks for contributing an answer to Super User!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsuperuser.com%2fquestions%2f1383241%2fcomplex-pulldown-in-ffmpeg-possible%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown