membraneframework / membrane_core

The core of the Membrane Framework, advanced multimedia processing framework
https://membrane.stream
Apache License 2.0
1.22k stars 34 forks source link

Removing pipeline including h264 parser in the middle of processing raises an error #798

Closed wkozyra95 closed 4 days ago

wkozyra95 commented 2 months ago

Not sure if this is a supported case but when I'm removing pipeline fragment while it is still processing I'm getting

10:44:54.298 [error] GenServer #PID<0.376.0> terminating
** (MatchError) no match of right hand side value: ""
    (membrane_h26x_plugin 0.10.1) lib/membrane_h264_plugin/h26x/exp_golomb_converter.ex:57: Membrane.H26x.ExpGolombConverter.cut_zeros/2
    (membrane_h26x_plugin 0.10.1) lib/membrane_h264_plugin/h26x/exp_golomb_converter.ex:20: Membrane.H26x.ExpGolombConverter.to_integer/2
    (membrane_h26x_plugin 0.10.1) lib/membrane_h264_plugin/h26x/nalu_parser/scheme_parser.ex:118: anonymous fn/3 in Membrane.H26x.NALuParser.SchemeParser.do_parse_with_scheme/4
    (elixir 1.16.2) lib/enum.ex:2528: Enum."-reduce/3-lists^foldl/2-0-"/3
    (membrane_h26x_plugin 0.10.1) lib/membrane_h264_plugin/h26x/nalu_parser/scheme_parser.ex:105: Membrane.H26x.NALuParser.SchemeParser.parse_with_scheme/4
    (membrane_h26x_plugin 0.10.1) lib/membrane_h264_plugin/h264/nalu_parser.ex:28: Membrane.H264.NALuParser.parse_proper_nalu_type/3
    (membrane_h26x_plugin 0.10.1) lib/membrane_h264_plugin/h26x/nalu_parser.ex:71: Membrane.H264.NALuParser.parse/4
    (elixir 1.16.2) lib/enum.ex:1826: Enum."-map_reduce/3-lists^mapfoldl/2-0-"/3
Last message: {Membrane.Core.Message, :terminate, [], []}

Example pipeline:

      child({:video_src, input_id}, %Membrane.File.Source{
        location: sample_path
      })
      |> child({:input_parser, input_id}, %Membrane.H264.Parser{
        output_alignment: :nalu,
        generate_best_effort_timestamps: %{framerate: {30, 1}}
      })
      |> child({:realtimer, input_id}, Membrane.Realtimer)
      |> ...
varsill commented 4 days ago

It seems that this bug has already been solved in release v0.10.2 (by this PR: https://github.com/membraneframework/membrane_h26x_plugin/pull/62)