[FFmpeg-trac] #5250(ffserver:new): ffserver streaming broken in 3.0/master but worked in 2.8.6
FFmpeg
trac at avcodec.org
Fri Feb 19 23:44:25 CET 2016
#5250: ffserver streaming broken in 3.0/master but worked in 2.8.6
------------------------------------+------------------------------------
Reporter: oviano | Owner:
Type: defect | Status: new
Priority: important | Component: ffserver
Version: git-master | Resolution:
Keywords: regression | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
------------------------------------+------------------------------------
Comment (by oviano):
Ok, I found the culprits after a very tedious git bisect process (building
on an Intel NUC doesn't help!). It's these two commits:
e33d3720239314d28a48c64c1071ba9c048280d1
3444c00aab6e187360a5aa66216abeb15d26ddc6
First problem:
Two of the strings passed into av_opt_set_int do not match:
av_opt_set_int(s, "server_attached", 1, AV_OPT_SEARCH_CHILDREN);
av_opt_set_int(s, "write_index", pos, AV_OPT_SEARCH_CHILDREN);
av_opt_set_int(s, "file_size", file_size, AV_OPT_SEARCH_CHILDREN);
...should be...
av_opt_set_int(s, "server_attached", 1, AV_OPT_SEARCH_CHILDREN);
av_opt_set_int(s, "ffm_write_index", pos, AV_OPT_SEARCH_CHILDREN);
av_opt_set_int(s, "ffm_file_size", file_size, AV_OPT_SEARCH_CHILDREN);
(Isn't this a bit of a fragile way to go about things, relying on string
matching with no error checking for a mismatch?)
Second problem:
When these fields are defined they have an invalid range:
static const AVOption options[] = {
{"server_attached", NULL, offsetof(FFMContext, server_attached),
AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, AV_OPT_FLAG_EXPORT },
{"ffm_write_index", NULL, offsetof(FFMContext, write_index),
AV_OPT_TYPE_INT64, {.i64 = 0}, 0, 1, AV_OPT_FLAG_EXPORT },
{"ffm_file_size", NULL, offsetof(FFMContext, file_size),
AV_OPT_TYPE_INT64, {.i64 = 0}, 0, 1, AV_OPT_FLAG_EXPORT },
{ NULL },
};
...should be...
static const AVOption options[] = {
{"server_attached", NULL, offsetof(FFMContext, server_attached),
AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, AV_OPT_FLAG_EXPORT },
{"ffm_write_index", NULL, offsetof(FFMContext, write_index),
AV_OPT_TYPE_INT64, {.i64 = 0}, 0, INT64_MAX, AV_OPT_FLAG_EXPORT },
{"ffm_file_size", NULL, offsetof(FFMContext, file_size),
AV_OPT_TYPE_INT64, {.i64 = 0}, 0, INT64_MAX, AV_OPT_FLAG_EXPORT },
{ NULL },
};
(Actually, I don't know what the accepted range is?)
If I make these changes then I can stream again using latest code.
Well I've learned a little "git" over the past two days, if someone can
advise me on a suitable range for the two fields above then I am happy to
learn "patch" and post it to the developers mailing list.
Or someone else can do it, I don't mind...
--
Ticket URL: <https://trac.ffmpeg.org/ticket/5250#comment:9>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list