[FFmpeg-devel] [PATCH] Enable dash output to work when the output isn't a local file
Hendrik Leppkes
h.leppkes at gmail.com
Tue Jan 5 14:27:41 CET 2016
On Tue, Jan 5, 2016 at 1:50 PM, Raymond Hilseth <rhi at vizrt.com> wrote:
>
>
> On 04/01/16 17:36, "ffmpeg-devel on behalf of Hendrik Leppkes"
> <ffmpeg-devel-bounces at ffmpeg.org on behalf of h.leppkes at gmail.com> wrote:
>
>>On Mon, Jan 4, 2016 at 3:58 PM, <rhi at vizrt.com> wrote:
>>> From: Raymond Hilseth <rhi at vizrt.com>
>>>
>>> Signed-off-by: Raymond Hilseth <rhi at vizrt.com>
>>> ---
>>> libavformat/dashenc.c | 4 ++--
>>> 1 file changed, 2 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/libavformat/dashenc.c b/libavformat/dashenc.c
>>> index 4509ee4..378c4e4 100644
>>> --- a/libavformat/dashenc.c
>>> +++ b/libavformat/dashenc.c
>>> @@ -549,7 +549,7 @@ static int write_manifest(AVFormatContext *s, int
>>>final)
>>> avio_printf(out, "</MPD>\n");
>>> avio_flush(out);
>>> avio_close(out);
>>> - return ff_rename(temp_filename, s->filename, s);
>>> + return avpriv_io_move(temp_filename, s->filename);
>>> }
>>>
>>> static int dash_write_header(AVFormatContext *s)
>>> @@ -856,7 +856,7 @@ static int dash_flush(AVFormatContext *s, int
>>>final, int stream)
>>> } else {
>>> ffurl_close(os->out);
>>> os->out = NULL;
>>> - ret = ff_rename(temp_path, full_path, s);
>>> + ret = avpriv_io_move(temp_path, full_path);
>>> if (ret < 0)
>>> break;
>>> }
>>> --
>>
>>For unknown reasons, url_move(which avpriv_io_move uses) in the "file"
>>protocol depends on unistd.h, which is not available everywhere.
>>So commiting this without making sure file.url_move is available on
>>all systems where ff_rename works would introduce a regression.
>>
>>- Hendrik
>
> Are there any supported platforms other than Windows where unistd.h isnĀ¹t
> available?
>
> As far as I can see, the existing code for dash encoding cannot work on
> Windows, since rename on Windows will fail when the destination file
> already exists, and the manifest file will already exist after the first
> segment has been written.
>
I don't know about DASH, but HLS does the same thing and it works
perfectly fine there even on Windows.
In any case, this is not directly relevant to the patch - it should
keep calling the same functions on local files.
- Hendrik
More information about the ffmpeg-devel
mailing list