erlyvideo

Code pulled with git from git://github.com/erlyvideo/erlyvideo.git with the last commit being 3bbde92

These are Current warnings for erlyvideo.

dialyzer -n -q -Wno_improper_lists -r apps/erlyvideo
leexinc.hrl:49: The pattern <Rest, Line, {'token', T, Push}, Ts> can never match the type <_,_,'error' | 'skip_token',[{atom(),_} | {'atom',_,atom()} | {'integer',_,integer()} | {'module_def',_,'module'} | {'server_def',_,'server'} | {'val',_,[any()]}]>
leexinc.hrl:52: The pattern <Rest, Line, {'end_token', T}, Ts> can never match the type <_,_,'error' | 'skip_token',[{atom(),_} | {'atom',_,atom()} | {'integer',_,integer()} | {'module_def',_,'module'} | {'server_def',_,'server'} | {'val',_,[any()]}]>
leexinc.hrl:54: The pattern <Rest, Line, {'end_token', T, Push}, Ts> can never match the type <_,_,'error' | 'skip_token',[{atom(),_} | {'atom',_,atom()} | {'integer',_,integer()} | {'module_def',_,'module'} | {'server_def',_,'server'} | {'val',_,[any()]}]>
leexinc.hrl:59: The pattern <Rest, Line, {'skip_token', Push}, Ts> can never match the type <_,_,'error',[{atom(),_} | {'atom',_,atom()} | {'integer',_,integer()} | {'module_def',_,'module'} | {'server_def',_,'server'} | {'val',_,[any()]}]>
leexinc.hrl:62: The pattern <_Rest, Line, {'error', S}, _Ts> can never match the type <_,_,'error',[{atom(),_} | {'atom',_,atom()} | {'integer',_,integer()} | {'module_def',_,'module'} | {'server_def',_,'server'} | {'val',_,[any()]}]>
leexinc.hrl:118: The pattern <Rest, Line, {'token', T, Push}> can never match the type <_,_,'error' | 'skip_token'>
leexinc.hrl:121: The pattern <Rest, Line, {'end_token', T}> can never match the type <_,_,'error' | 'skip_token'>
leexinc.hrl:123: The pattern <Rest, Line, {'end_token', T, Push}> can never match the type <_,_,'error' | 'skip_token'>
leexinc.hrl:128: The pattern <Rest, Line, {'skip_token', Push}> can never match the type <_,_,'error'>
leexinc.hrl:131: The pattern <Rest, Line, {'error', S}> can never match the type <_,_,'error'>
leexinc.hrl:192: The pattern <Rest, Line, {'token', T, Push}, Ts> can never match the type <_,_,'error' | 'skip_token',_>
leexinc.hrl:195: The pattern <Rest, Line, {'end_token', T}, Ts> can never match the type <_,_,'error' | 'skip_token',_>
leexinc.hrl:197: The pattern <Rest, Line, {'end_token', T, Push}, Ts> can never match the type <_,_,'error' | 'skip_token',_>
leexinc.hrl:202: The pattern <Rest, Line, {'skip_token', Push}, Ts> can never match the type <_,_,'error',_>
leexinc.hrl:205: The pattern <Rest, Line, {'error', S}, _Ts> can never match the type <_,_,'error',_>
leexinc.hrl:243: The pattern <Rest, Line, {'token', _T, Push}, Error> can never match the type <_,_,'error' | 'skip_token',_>
leexinc.hrl:246: The pattern <Rest, Line, {'end_token', _T}, Error> can never match the type <_,_,'error' | 'skip_token',_>
leexinc.hrl:248: The pattern <Rest, Line, {'end_token', _T, Push}, Error> can never match the type <_,_,'error' | 'skip_token',_>
leexinc.hrl:253: The pattern <Rest, Line, {'skip_token', Push}, Error> can never match the type <_,_,'error',_>
leexinc.hrl:256: The pattern <Rest, Line, {'error', _S}, Error> can never match the type <_,_,'error',_>
leexinc.hrl:260: Function yyrev/2 will never be called
yeccpre.hrl:70: Function yecc_error_type/2 has no local return
yeccpre.hrl:70: The pattern <'function_clause', [{'ems_config_parser', F, ArityOrArgs} | _]> can never match the type <_,[{atom(),atom(),[any()] | byte(),[any()]}]>
apps_streaming.erl:77: Call to missing or unexported function rtmp_session:close_stream/2
apps_streaming.erl:167: The pattern 'null' can never match the type 'false' | tuple()
apps_streaming.erl:169: The pattern 'undefined' can never match the type 'false' | tuple()
referer_check.erl:27: Function connect/2 has no local return
referer_check.erl:31: The pattern {'http', _, Hostname, _Port, _Path, _QueryString} can never match the type {'error','no_scheme' | {'malformed_url',_} | {'not_supported_scheme',atom()}} | {'ok',{'http',_,_,_,_,_} | {'https',_,_,_,_,_}}
rtmp_cookie.erl:124: The variable _ can never match since previous clauses completely covered the type 'false'
ems_network_lag_monitor.erl:193: The variable _ can never match since previous clauses completely covered the type 'false'
ems_network_lag_monitor.erl:198: The variable _ can never match since previous clauses completely covered the type 'false'
ems_network_lag_monitor.erl:203: The variable _ can never match since previous clauses completely covered the type 'false'
gen_server_ems.erl:809: Call to missing or unexported function global:safe_whereis_name/1
gen_server_ems.erl:831: Call to missing or unexported function global:safe_whereis_name/1
mmap.erl:36: Function open/2 has no local return
ems.erl:146: The pattern 'false' can never match the type {'error','badfile' | 'embedded' | 'native_code' | 'nofile' | 'on_load'} | {'module',atom() | tuple()}
ems.erl:152: The pattern 'false' can never match the type {'error','badfile' | 'embedded' | 'native_code' | 'nofile' | 'on_load'} | {'module',atom() | tuple()}
ems_config_parser.erl:250: The pattern <Other, _, _, _, _, _, _> can never match since previous clauses completely covered the type <0 | 5 | 6 | 7 | 9 | 10 | 14 | 16 | 18 | 21 | 22 | 23 | 25,_,[byte()],[any()],tuple(),_,{'no_func' | {_,_},_}>
ems_event.erl:162: Call to missing or unexported function gen_event:remove_handler/2
ems_license_client.erl:156: The pattern 'undefined' can never match the type [any()]
ems_license_client.erl:191: The pattern 'undefined' can never match the type [any()]
ems_license_client.erl:331: The pattern 'true' can never match the type 'false' | {'file','cover_compiled' | 'preloaded' | binary() | string()}
ems_license_client.erl:462: The created fun has no local return
ems_license_client.erl:462: The created fun has no local return
ems_license_client.erl:462: The call erlang:'not'('ok' | {'error','deprecated_versions' | 'empty_storage'}) will never return since it differs in the 1st argument from the success typing arguments: (boolean())
ems_license_client.erl:467: The variable __V can never match since previous clauses completely covered the type 'true'
ems_rtmp.erl:82: Call to missing or unexported function rtmp_session:call_function/3
ems_rtmp.erl:192: Function metadata/2 has no local return
ems_rtmp.erl:203: Function metadata_frame/2 has no local return
ems_rtmp.erl:213: Record construction #video_frame{content::'metadata',sound::{'undefined','undefined','undefined'},body::[<<_:80>> | {'object',[any()]},...]} violates the declared type of field dts::number() and pts::number() and stream_id::non_neg_integer() and sound::'undefined' | {'mono','bit16' | 'bit8','rate11' | 'rate22' | 'rate44' | 'rate5'} | {'stereo','bit16' | 'bit8','rate11' | 'rate22' | 'rate44' | 'rate5'} and body::binary()
erlyvideo.erl:366: The call erlyvideo:reload(T::[any()]) will never return since it differs in the 1st argument from the success typing arguments: (atom())
ems_http_erlyvideo_api.erl:99: The pattern 'ok' can never match the type {'error',_} | {'ok',[atom()]}
ems_http_flv.erl:55: The variable Reason can never match since previous clauses completely covered the type {'notfound',<<_:48,_:_*8>>} | {'ok',pid()}
ems_http_mpegts.erl:51: The variable Reason can never match since previous clauses completely covered the type {'notfound',<<_:48,_:_*8>>} | {'ok',pid()}
jsonerl.erl:490: Guard test is_tuple(Tuples::[{<<_:24,_:_*16>>,'true' | <<_:24>> | [any()] | 123 | tuple()},...]) can never succeed
array_timeshift.erl:31: Callback info about the gen_format behaviour is not available
ems_media.erl:98: Function start_link/2 has no local return
ems_media.erl:99: The call gen_server_ems:start_link('ems_media',[any(),...],[{'fullsweep_after',10},...]) will never return since it differs in the 3rd argument from the success typing arguments: (atom() | tuple(),any(),[{'debug',['debug' | 'log' | 'statistics' | 'trace' | {_,_}]} | {'spawn_opt',['link' | 'monitor' | {_,_}]} | {'timeout','infinity' | non_neg_integer()}])
ems_media.erl:102: Function start_custom/2 has no local return
ems_media.erl:103: The call gen_server_ems:start_link(Module::any(),[any(),...],[{'fullsweep_after',10},...]) will never return since it differs in the 3rd argument from the success typing arguments: (atom() | tuple(),any(),[{'debug',['debug' | 'log' | 'statistics' | 'trace' | {_,_}]} | {'spawn_opt',['link' | 'monitor' | {_,_}]} | {'timeout','infinity' | non_neg_integer()}])
ems_media.erl:345: The test [#stream_info{content::'audio' | 'metadata' | 'video',stream_id::non_neg_integer(),codec::atom(),bitrate::non_neg_integer(),language::'undefined' | string(),params::#audio_params{channels::non_neg_integer(),sample_rate::non_neg_integer()} | #video_params{width::non_neg_integer(),height::non_neg_integer(),fps::non_neg_integer()},timescale::non_neg_integer()}] == 'wait' can never evaluate to 'true'
ems_media.erl:461: Function init/1 has no local return
ems_media.erl:475: Record construction #media_info{flow_type::'stream',audio::'wait',video::'wait',metadata::[],options::[]} violates the declared type of field audio::[#stream_info{content::'audio' | 'metadata' | 'video',stream_id::non_neg_integer(),codec::atom(),bitrate::non_neg_integer(),language::'undefined' | string(),params::#audio_params{channels::non_neg_integer(),sample_rate::non_neg_integer()} | #video_params{width::non_neg_integer(),height::non_neg_integer(),fps::non_neg_integer()},timescale::non_neg_integer()}] and video::[#stream_info{content::'audio' | 'metadata' | 'video',stream_id::non_neg_integer(),codec::atom(),bitrate::non_neg_integer(),language::'undefined' | string(),params::#audio_params{channels::non_neg_integer(),sample_rate::non_neg_integer()} | #video_params{width::non_neg_integer(),height::non_neg_integer(),fps::non_neg_integer()},timescale::non_neg_integer()}]
ems_media.erl:509: Function init_timeshift/2 will never be called
ems_media.erl:524: Function init_timeouts/2 will never be called
ems_media.erl:532: Function init_transcoder/2 will never be called
ems_media.erl:541: Function or_time/2 will never be called
ems_media.erl:802: The pattern 'wait' can never match the type [#stream_info{content::'audio' | 'metadata' | 'video',stream_id::non_neg_integer(),codec::atom(),bitrate::non_neg_integer(),language::'undefined' | string(),params::#audio_params{channels::non_neg_integer(),sample_rate::non_neg_integer()} | #video_params{width::non_neg_integer(),height::non_neg_integer(),fps::non_neg_integer()},timescale::non_neg_integer()}]
ems_media_clients.erl:225: The pattern <Clients = {'clients', _, _, _, _, _, 'undefined', _, _, _, _}, _Client, 11, _Value> can never match the type <_,_,8,_>
ems_media_clients.erl:228: The pattern <Clients = {'clients', _, _, _, _, _, Bytes, _, _, _, _}, Client, 11, Value> can never match the type <_,_,8,_>
ems_media_frame.erl:161: The pattern <'audio', 'wait', _> can never match the type <'audio' | 'metadata' | 'video',[#stream_info{content::'audio' | 'metadata' | 'video',stream_id::non_neg_integer(),codec::atom(),bitrate::non_neg_integer(),language::'undefined' | [any()],params::{_,_,_} | {_,_,_,_},timescale::non_neg_integer()}],[#stream_info{content::'audio' | 'metadata' | 'video',stream_id::non_neg_integer(),codec::atom(),bitrate::non_neg_integer(),language::'undefined' | [any()],params::{_,_,_} | {_,_,_,_},timescale::non_neg_integer()}]>
ems_media_frame.erl:163: The pattern <'video', _, 'wait'> can never match the type <'audio' | 'metadata' | 'video',[#stream_info{content::'audio' | 'metadata' | 'video',stream_id::non_neg_integer(),codec::atom(),bitrate::non_neg_integer(),language::'undefined' | [any()],params::{_,_,_} | {_,_,_,_},timescale::non_neg_integer()}],[#stream_info{content::'audio' | 'metadata' | 'video',stream_id::non_neg_integer(),codec::atom(),bitrate::non_neg_integer(),language::'undefined' | [any()],params::{_,_,_} | {_,_,_,_},timescale::non_neg_integer()}]>
ems_media_frame.erl:179: Matching of pattern <Frame = {'video_frame', _, 'undefined', _, _, _, _, _, _, _}, Media = {'ems_media', _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, LastDTS, _, _, _, _, _, _, _, _, _, _, _, _, _, _}> tagged with a record name violates the declared type of #video_frame{content::'audio' | 'metadata' | 'video',dts::number(),pts::number(),stream_id::non_neg_integer(),codec::atom(),flavor::'config' | 'disposable' | 'frame' | 'keyframe' | 'undefined',sound::'undefined' | {'mono','bit16' | 'bit8','rate11' | 'rate22' | 'rate44' | 'rate5'} | {'stereo','bit16' | 'bit8','rate11' | 'rate22' | 'rate44' | 'rate5'},body::binary()}
file_media.erl:25: Callback info about the ems_media behaviour is not available
http_flv_media.erl:25: Callback info about the ems_media behaviour is not available
http_media.erl:30: Function start_link/2 has no local return
http_media.erl:34: The pattern {_, _, Host, Port, Path, Query} can never match the type {'error','no_scheme' | {'malformed_url',_} | {'not_supported_scheme',atom()}} | {'ok',{'http',_,_,_,_,_} | {'https',_,_,_,_,_}}
live_media.erl:33: Callback info about the ems_media behaviour is not available
mpegts_file_media.erl:26: Callback info about the ems_media behaviour is not available
mpegts_media.erl:25: Callback info about the ems_media behaviour is not available
mpegts_passive_media.erl:25: Callback info about the ems_media behaviour is not available
old_directory_playlist.erl:25: Callback info about the ems_media behaviour is not available
proxy_media.erl:25: Callback info about the ems_media behaviour is not available
proxy_media.erl:161: Record construction #video_frame{content::'audio',dts::number(),pts::number(),stream_id::non_neg_integer(),codec::'empty',flavor::'frame',sound::{'undefined','undefined','undefined'},body::<<>>} violates the declared type of field sound::'undefined' | {'mono','bit16' | 'bit8','rate11' | 'rate22' | 'rate44' | 'rate5'} | {'stereo','bit16' | 'bit8','rate11' | 'rate22' | 'rate44' | 'rate5'}
rtmp_media.erl:25: Callback info about the ems_media behaviour is not available
rtmp_media.erl:106: Record construction #video_frame{content::'audio' | 'video',dts::'same' | 'undefined' | number(),pts::'same' | 'undefined' | number(),stream_id::0,sound::{'undefined','undefined','undefined'},body::<<>>} violates the declared type of field dts::number() and pts::number() and sound::'undefined' | {'mono','bit16' | 'bit8','rate11' | 'rate22' | 'rate44' | 'rate5'} | {'stereo','bit16' | 'bit8','rate11' | 'rate22' | 'rate44' | 'rate5'}
rtmp_media.erl:117: Record construction #video_frame{content::'metadata',dts::'same' | 'undefined' | number(),pts::'same' | 'undefined' | number(),stream_id::0,sound::{'undefined','undefined','undefined'},body::'undefined' | binary() | [any()] | non_neg_integer() | {char(),binary()} | #rtmp_message_ack{bytes_read::'undefined' | non_neg_integer(),previous_ack::'undefined' | {integer(),integer(),integer()},current_ack::'undefined' | {integer(),integer(),integer()},speed::'undefined' | non_neg_integer()} | #so_message{} | #rtmp_funcall{}} violates the declared type of field dts::number() and pts::number() and sound::'undefined' | {'mono','bit16' | 'bit8','rate11' | 'rate22' | 'rate44' | 'rate5'} | {'stereo','bit16' | 'bit8','rate11' | 'rate22' | 'rate44' | 'rate5'} and body::binary()
rtmp_media.erl:146: Record construction #media_info{audio::[],video::[],metadata::[],options::[]} violates the declared type of field flow_type::'file' | 'stream'
rtsp_media.erl:25: Callback info about the ems_media behaviour is not available
reverse_mpegts.erl:47: The created fun has no local return
reverse_mpegts.erl:61: The pattern {_, _, Host, Port, Path, Query} can never match the type {'error','no_scheme' | {'malformed_url',_} | {'not_supported_scheme',atom()}} | {'ok',{'http',_,_,_,_,_} | {'https',_,_,_,_,_}}
reverse_mpegts.erl:78: Function read_response/2 will never be called
reverse_mpegts.erl:95: Function read_headers/2 will never be called
reverse_mpegts.erl:117: Function connect_to/1 has no local return
reverse_mpegts.erl:118: The pattern {_, _, Host, Port, Path, Query} can never match the type {'error','no_scheme' | {'malformed_url',_} | {'not_supported_scheme',atom()}} | {'ok',{'http',_,_,_,_,_} | {'https',_,_,_,_,_}}
reverse_mpegts.erl:132: Function run_loop/1 has no local return
reverse_mpegts.erl:132: The pattern {'pusher', URL, _, 100, _, _, _} can never match the type #pusher{from_counter::0,to_counter::0,from::'undefined' | {'port',port()}}
reverse_mpegts.erl:136: The pattern {'pusher', _, URL, _, 100, _, _} can never match the type #pusher{from_counter::0,to_counter::0,from::'undefined' | {'port',port()}}
reverse_mpegts.erl:140: The pattern Pusher = {'pusher', _, _, Counter, _, 'false', _} can never match the type #pusher{from_counter::0,to_counter::0,from::'undefined' | {'port',port()}}
reverse_mpegts.erl:143: The pattern Pusher = {'pusher', _, _, _, Counter, _, 'false'} can never match the type #pusher{from_counter::0,to_counter::0,from::'undefined' | {'port',port()}}
reverse_mpegts.erl:153: The pattern Pusher = {'pusher', _, _, _, _, {Mode, From}, To} can never match since previous clauses completely covered the type #pusher{from_counter::0,to_counter::0,from::'undefined' | {'port',port()}}
routes.erl:120: The pattern 'nomatch' can never match the type binary() | maybe_improper_list(binary() | maybe_improper_list(any(),binary() | []) | non_neg_integer(),binary() | [])
rtmp_dump.erl:202: The created fun has no local return
rtmp_dump.erl:209: Function run_publish/4 will never be called
rtmp_session.erl:63: Call to missing or unexported function ems_sup:start_rtmp_session/1
rtmp_session.erl:124: Function metadata/1 has no local return
rtmp_session.erl:133: Function metadata/2 has no local return
rtmp_session.erl:144: Function metadata_frame/2 has no local return
rtmp_session.erl:154: Record construction #video_frame{content::'metadata',sound::{'undefined','undefined','undefined'},body::[<<_:80>> | {'object',[any()]},...]} violates the declared type of field dts::number() and pts::number() and stream_id::non_neg_integer() and flavor::'config' | 'disposable' | 'frame' | 'keyframe' and sound::{'mono','bit16' | 'bit8','rate11' | 'rate22' | 'rate44' | 'rate5'} | {'stereo','bit16' | 'bit8','rate11' | 'rate22' | 'rate44' | 'rate5'} and body::binary()
rtmp_session.erl:353: Record construction #video_frame{content::'audio' | 'metadata' | 'metadata3' | 'video',dts::'same' | 'undefined' | number(),pts::'same' | 'undefined' | number(),stream_id::0,sound::{'undefined','undefined','undefined'},body::<<>>} violates the declared type of field content::'audio' | 'metadata' | 'video' and dts::number() and pts::number() and flavor::'config' | 'disposable' | 'frame' | 'keyframe' and sound::{'mono','bit16' | 'bit8','rate11' | 'rate22' | 'rate44' | 'rate5'} | {'stereo','bit16' | 'bit8','rate11' | 'rate22' | 'rate44' | 'rate5'}
rtmp_session.erl:585: The inferred return type of code_change/3 ('ok') has nothing in common with {'error',_} | {'ok',_}, which is the expected return type for the callback of gen_server behaviour
shared_objects.erl:96: Call to missing or unexported function ems_sup:start_shared_object/3
apps_sip.erl:75: Function outgoingCall/2 has no local return
ems_sip_flashphone.erl:176: The inferred return type of handle_sync_event/4 ({'reply',{'unknown_sync_event',_},{'error',{'unknown_sync_event',_}},_}) has nothing in common with {'next_state',atom(),_} | {'stop',_,_} | {'next_state',atom(),_,'hibernate' | 'infinity' | non_neg_integer()} | {'reply',_,atom(),_} | {'stop',_,_,_} | {'reply',_,atom(),_,'hibernate' | 'infinity' | non_neg_integer()}, which is the expected return type for the callback of gen_fsm behaviour
ems_sip_flashphone.erl:391: Function call/3 has no local return
ems_sip_flashphone.erl:436: Function originating/5 has no local return
ems_sip_flashphone.erl:447: Record construction #sdp_o{version::[49,...],netaddrtype::'inet'} violates the declared type of field netaddrtype::'inet4' | 'inet6' and address::'undefined' | string()
ems_sip_flashphone.erl:683: Record construction #sdp_o{version::[49,...],netaddrtype::'inet'} violates the declared type of field netaddrtype::'inet4' | 'inet6' and address::'undefined' | string()
ems_sip_flashphone.erl:697: Function will never be called
ems_sip_flashphone.erl:700: Function will never be called
ems_sip_flashphone.erl:728: Matching of pattern [StreamInfo = {'stream_info', _, _, 'pcma', _, _, _, {'audio_params', _, 8000}, _, SOptions} | _] tagged with a record name violates the declared type of #stream_info{content::'audio' | 'metadata' | 'video',stream_id::1,codec::'speex',bitrate::non_neg_integer(),language::'undefined' | string(),params::#audio_params{channels::non_neg_integer(),sample_rate::non_neg_integer()},timescale::non_neg_integer()}
ems_sip_flashphone.erl:731: Matching of pattern [StreamInfo = {'stream_info', _, _, 'pcma', _, _, _, {'audio_params', _, 8000}, _, _} | _] tagged with a record name violates the declared type of #stream_info{content::'audio' | 'metadata' | 'video',stream_id::1,codec::'speex',bitrate::non_neg_integer(),language::'undefined' | string(),params::#audio_params{channels::non_neg_integer(),sample_rate::non_neg_integer()},timescale::non_neg_integer()}
ems_media_flow_tests.erl:51: The created fun has no local return
ems_media_flow_tests.erl:97: The variable _ can never match since previous clauses completely covered the type 'false'
ems_media_flow_tests.erl:100: The variable _ can never match since previous clauses completely covered the type 'false'
ems_media_flow_tests.erl:125: The variable _ can never match since previous clauses completely covered the type 'false'
ems_media_flow_tests.erl:128: The variable _ can never match since previous clauses completely covered the type 'false'
ems_media_timeout_tests.erl:44: The created fun has no local return
ems_media_timeout_tests.erl:65: The variable _ can never match since previous clauses completely covered the type 'false'
ems_media_timeout_tests.erl:67: The variable _ can never match since previous clauses completely covered the type 'false'
ems_media_timeout_tests.erl:75: The variable _ can never match since previous clauses completely covered the type 'false'
ems_media_timeout_tests.erl:81: The variable _ can never match since previous clauses completely covered the type 'false'
ems_media_timeout_tests.erl:83: The variable _ can never match since previous clauses completely covered the type 'false'
ems_media_timeout_tests.erl:92: The variable _ can never match since previous clauses completely covered the type 'false'
ems_media_timeout_tests.erl:96: The variable _ can never match since previous clauses completely covered the type 'false'
ems_media_timeout_tests.erl:105: The variable _ can never match since previous clauses completely covered the type 'false'
ems_media_timeout_tests.erl:107: The variable _ can never match since previous clauses completely covered the type 'false'
ems_media_timeout_tests.erl:114: The variable _ can never match since previous clauses completely covered the type 'false'
ems_media_timeout_tests.erl:120: The variable _ can never match since previous clauses completely covered the type 'false'
ems_media_timeout_tests.erl:122: The variable _ can never match since previous clauses completely covered the type 'false'
ems_media_timeout_tests.erl:130: The variable _ can never match since previous clauses completely covered the type 'false'
ems_media_timeout_tests.erl:134: The variable _ can never match since previous clauses completely covered the type 'false'
ems_media_timeout_tests.erl:145: The variable _ can never match since previous clauses completely covered the type 'false'
ems_media_timeout_tests.erl:151: The variable _ can never match since previous clauses completely covered the type 'false'
ems_test_file_reading.erl:59: Function h264_aac_1_mp4_test/0 has no local return
ems_test_file_reading.erl:62: The created fun has no local return
ems_test_file_reading.erl:62: Matching of pattern {'media_info', 'file', [{'stream_info', 'audio', 2, 'aac', <<17:8/integer-unit:1,144:8/integer-unit:1>>, 'undefined', 'undefined', _, _, _}], [{'stream_info', 'video', 1, 'h264', <<1:8/integer-unit:1,66:8/integer-unit:1,192:8/integer-unit:1,13:8/integer-unit:1,255:8/integer-unit:1,225:8/integer-unit:1,0:8/integer-unit:1,25:8/integer-unit:1,103:8/integer-unit:1,66:8/integer-unit:1,192:8/integer-unit:1,13:8/integer-unit:1,171:8/integer-unit:1,32:8/integer-unit:1,40:8/integer-unit:1,51:8/integer-unit:1,243:8/integer-unit:1,224:8/integer-unit:1,34:8/integer-unit:1,0:8/integer-unit:1,0:8/integer-unit:1,3:8/integer-unit:1,0:8/integer-unit:1,2:8/integer-unit:1,0:8/integer-unit:1,0:8/integer-unit:1,3:8/integer-unit:1,0:8/integer-unit:1,97:8/integer-unit:1,30:8/integer-unit:1,40:8/integer-unit:1,84:8/integer-unit:1,144:8/integer-unit:1,1:8/integer-unit:1,0:8/integer-unit:1,4:8/integer-unit:1,104:8/integer-unit:1,206:8/integer-unit:1,60:8/integer-unit:1,128:8/integer-unit:1>>, _, 'undefined', {'video_params', 320, 180, _}, _, _}], [], 1.99893333333333321207e+4, _} tagged with a record name violates the declared type of #media_info{flow_type::'file' | 'stream',audio::[#stream_info{content::'audio' | 'metadata' | 'video',stream_id::non_neg_integer(),codec::atom(),bitrate::non_neg_integer(),language::'undefined' | string(),params::#audio_params{channels::non_neg_integer(),sample_rate::non_neg_integer()} | #video_params{width::non_neg_integer(),height::non_neg_integer(),fps::non_neg_integer()},timescale::non_neg_integer()}],video::[#stream_info{content::'audio' | 'metadata' | 'video',stream_id::non_neg_integer(),codec::atom(),bitrate::non_neg_integer(),language::'undefined' | string(),params::#audio_params{channels::non_neg_integer(),sample_rate::non_neg_integer()} | #video_params{width::non_neg_integer(),height::non_neg_integer(),fps::non_neg_integer()},timescale::non_neg_integer()}],metadata::[#stream_info{content::'audio' | 'metadata' | 'video',stream_id::non_neg_integer(),codec::atom(),bitrate::non_neg_integer(),language::'undefined' | string(),params::#audio_params{channels::non_neg_integer(),sample_rate::non_neg_integer()} | #video_params{width::non_neg_integer(),height::non_neg_integer(),fps::non_neg_integer()},timescale::non_neg_integer()}],duration::'undefined' | non_neg_integer(),options::[any()]}
ems_test_file_reading.erl:126: The variable _ can never match since previous clauses completely covered the type 'false'
ems_test_file_reading.erl:128: The variable _ can never match since previous clauses completely covered the type 'false'
ems_test_file_reading.erl:129: The variable _ can never match since previous clauses completely covered the type 'false'
ems_test_file_reading.erl:150: The variable _ can never match since previous clauses completely covered the type 'false'
ems_test_file_reading.erl:151: The variable _ can never match since previous clauses completely covered the type 'false'
ems_test_file_reading.erl:152: The variable _ can never match since previous clauses completely covered the type 'false'
ems_test_file_reading.erl:170: Function h264_aac_2_mp4_test/0 has no local return
ems_test_file_reading.erl:173: The created fun has no local return
ems_test_file_reading.erl:173: Matching of pattern {'media_info', 'file', [{'stream_info', 'audio', 2, 'aac', <<17:8/integer-unit:1,144:8/integer-unit:1>>, 'undefined', <<101:8/integer-unit:1,110:8/integer-unit:1,103:8/integer-unit:1>>, _, _, _}, {'stream_info', 'audio', 3, 'aac', <<17:8/integer-unit:1,144:8/integer-unit:1>>, 'undefined', <<103:8/integer-unit:1,101:8/integer-unit:1,114:8/integer-unit:1>>, _, _, _}], [{'stream_info', 'video', 1, 'h264', <<1:8/integer-unit:1,66:8/integer-unit:1,192:8/integer-unit:1,13:8/integer-unit:1,255:8/integer-unit:1,225:8/integer-unit:1,0:8/integer-unit:1,25:8/integer-unit:1,103:8/integer-unit:1,66:8/integer-unit:1,192:8/integer-unit:1,13:8/integer-unit:1,171:8/integer-unit:1,32:8/integer-unit:1,40:8/integer-unit:1,51:8/integer-unit:1,243:8/integer-unit:1,224:8/integer-unit:1,34:8/integer-unit:1,0:8/integer-unit:1,0:8/integer-unit:1,3:8/integer-unit:1,0:8/integer-unit:1,2:8/integer-unit:1,0:8/integer-unit:1,0:8/integer-unit:1,3:8/integer-unit:1,0:8/integer-unit:1,97:8/integer-unit:1,30:8/integer-unit:1,40:8/integer-unit:1,84:8/integer-unit:1,144:8/integer-unit:1,1:8/integer-unit:1,0:8/integer-unit:1,4:8/integer-unit:1,104:8/integer-unit:1,206:8/integer-unit:1,60:8/integer-unit:1,128:8/integer-unit:1>>, _, 'undefined', {'video_params', 320, 180, _}, _, _}], _, 1.99893333333333321207e+4, _} tagged with a record name violates the declared type of #media_info{flow_type::'file' | 'stream',audio::[#stream_info{content::'audio' | 'metadata' | 'video',stream_id::non_neg_integer(),codec::atom(),bitrate::non_neg_integer(),language::'undefined' | string(),params::#audio_params{channels::non_neg_integer(),sample_rate::non_neg_integer()} | #video_params{width::non_neg_integer(),height::non_neg_integer(),fps::non_neg_integer()},timescale::non_neg_integer()}],video::[#stream_info{content::'audio' | 'metadata' | 'video',stream_id::non_neg_integer(),codec::atom(),bitrate::non_neg_integer(),language::'undefined' | string(),params::#audio_params{channels::non_neg_integer(),sample_rate::non_neg_integer()} | #video_params{width::non_neg_integer(),height::non_neg_integer(),fps::non_neg_integer()},timescale::non_neg_integer()}],metadata::[#stream_info{content::'audio' | 'metadata' | 'video',stream_id::non_neg_integer(),codec::atom(),bitrate::non_neg_integer(),language::'undefined' | string(),params::#audio_params{channels::non_neg_integer(),sample_rate::non_neg_integer()} | #video_params{width::non_neg_integer(),height::non_neg_integer(),fps::non_neg_integer()},timescale::non_neg_integer()}],duration::'undefined' | non_neg_integer(),options::[any()]}
ems_test_file_reading.erl:211: Function h264_mp3_1_mp4_test/0 has no local return
ems_test_file_reading.erl:214: The created fun has no local return
ems_test_file_reading.erl:214: Matching of pattern {'media_info', 'file', [{'stream_info', 'audio', 2, 'mp3', 'undefined', 'undefined', 'undefined', _, _, _}], [{'stream_info', 'video', 1, 'h264', <<1:8/integer-unit:1,66:8/integer-unit:1,192:8/integer-unit:1,13:8/integer-unit:1,255:8/integer-unit:1,225:8/integer-unit:1,0:8/integer-unit:1,25:8/integer-unit:1,103:8/integer-unit:1,66:8/integer-unit:1,192:8/integer-unit:1,13:8/integer-unit:1,171:8/integer-unit:1,32:8/integer-unit:1,40:8/integer-unit:1,51:8/integer-unit:1,243:8/integer-unit:1,224:8/integer-unit:1,34:8/integer-unit:1,0:8/integer-unit:1,0:8/integer-unit:1,3:8/integer-unit:1,0:8/integer-unit:1,2:8/integer-unit:1,0:8/integer-unit:1,0:8/integer-unit:1,3:8/integer-unit:1,0:8/integer-unit:1,97:8/integer-unit:1,30:8/integer-unit:1,40:8/integer-unit:1,84:8/integer-unit:1,144:8/integer-unit:1,1:8/integer-unit:1,0:8/integer-unit:1,4:8/integer-unit:1,104:8/integer-unit:1,206:8/integer-unit:1,60:8/integer-unit:1,128:8/integer-unit:1>>, _, 'undefined', {'video_params', 320, 180, _}, _, _}], [], 2.0016e+4, _} tagged with a record name violates the declared type of #media_info{flow_type::'file' | 'stream',audio::[#stream_info{content::'audio' | 'metadata' | 'video',stream_id::non_neg_integer(),codec::atom(),bitrate::non_neg_integer(),language::'undefined' | string(),params::#audio_params{channels::non_neg_integer(),sample_rate::non_neg_integer()} | #video_params{width::non_neg_integer(),height::non_neg_integer(),fps::non_neg_integer()},timescale::non_neg_integer()}],video::[#stream_info{content::'audio' | 'metadata' | 'video',stream_id::non_neg_integer(),codec::atom(),bitrate::non_neg_integer(),language::'undefined' | string(),params::#audio_params{channels::non_neg_integer(),sample_rate::non_neg_integer()} | #video_params{width::non_neg_integer(),height::non_neg_integer(),fps::non_neg_integer()},timescale::non_neg_integer()}],metadata::[#stream_info{content::'audio' | 'metadata' | 'video',stream_id::non_neg_integer(),codec::atom(),bitrate::non_neg_integer(),language::'undefined' | string(),params::#audio_params{channels::non_neg_integer(),sample_rate::non_neg_integer()} | #video_params{width::non_neg_integer(),height::non_neg_integer(),fps::non_neg_integer()},timescale::non_neg_integer()}],duration::'undefined' | non_neg_integer(),options::[any()]}
ems_test_file_reading.erl:248: Function h264_1_mp4_test/0 has no local return
ems_test_file_reading.erl:251: The created fun has no local return
ems_test_file_reading.erl:251: Matching of pattern {'media_info', 'file', [], [{'stream_info', 'video', 1, 'h264', <<1:8/integer-unit:1,66:8/integer-unit:1,192:8/integer-unit:1,13:8/integer-unit:1,255:8/integer-unit:1,225:8/integer-unit:1,0:8/integer-unit:1,25:8/integer-unit:1,103:8/integer-unit:1,66:8/integer-unit:1,192:8/integer-unit:1,13:8/integer-unit:1,171:8/integer-unit:1,32:8/integer-unit:1,40:8/integer-unit:1,51:8/integer-unit:1,243:8/integer-unit:1,224:8/integer-unit:1,34:8/integer-unit:1,0:8/integer-unit:1,0:8/integer-unit:1,3:8/integer-unit:1,0:8/integer-unit:1,2:8/integer-unit:1,0:8/integer-unit:1,0:8/integer-unit:1,3:8/integer-unit:1,0:8/integer-unit:1,97:8/integer-unit:1,30:8/integer-unit:1,40:8/integer-unit:1,84:8/integer-unit:1,144:8/integer-unit:1,1:8/integer-unit:1,0:8/integer-unit:1,4:8/integer-unit:1,104:8/integer-unit:1,206:8/integer-unit:1,60:8/integer-unit:1,128:8/integer-unit:1>>, _, 'undefined', {'video_params', 320, 180, _}, _, _}], [], 1.99583333333333321207e+4, _} tagged with a record name violates the declared type of #media_info{flow_type::'file' | 'stream',audio::[#stream_info{content::'audio' | 'metadata' | 'video',stream_id::non_neg_integer(),codec::atom(),bitrate::non_neg_integer(),language::'undefined' | string(),params::#audio_params{channels::non_neg_integer(),sample_rate::non_neg_integer()} | #video_params{width::non_neg_integer(),height::non_neg_integer(),fps::non_neg_integer()},timescale::non_neg_integer()}],video::[#stream_info{content::'audio' | 'metadata' | 'video',stream_id::non_neg_integer(),codec::atom(),bitrate::non_neg_integer(),language::'undefined' | string(),params::#audio_params{channels::non_neg_integer(),sample_rate::non_neg_integer()} | #video_params{width::non_neg_integer(),height::non_neg_integer(),fps::non_neg_integer()},timescale::non_neg_integer()}],metadata::[#stream_info{content::'audio' | 'metadata' | 'video',stream_id::non_neg_integer(),codec::atom(),bitrate::non_neg_integer(),language::'undefined' | string(),params::#audio_params{channels::non_neg_integer(),sample_rate::non_neg_integer()} | #video_params{width::non_neg_integer(),height::non_neg_integer(),fps::non_neg_integer()},timescale::non_neg_integer()}],duration::'undefined' | non_neg_integer(),options::[any()]}
ems_test_file_reading.erl:271: Function h264_1_flv_test/0 has no local return
ems_test_file_reading.erl:274: The created fun has no local return
ems_test_file_reading.erl:274: Matching of pattern {'media_info', 'file', [], [{'stream_info', 'video', 1, 'h264', <<1:8/integer-unit:1,66:8/integer-unit:1,192:8/integer-unit:1,13:8/integer-unit:1,255:8/integer-unit:1,225:8/integer-unit:1,0:8/integer-unit:1,25:8/integer-unit:1,103:8/integer-unit:1,66:8/integer-unit:1,192:8/integer-unit:1,13:8/integer-unit:1,171:8/integer-unit:1,32:8/integer-unit:1,40:8/integer-unit:1,51:8/integer-unit:1,243:8/integer-unit:1,224:8/integer-unit:1,34:8/integer-unit:1,0:8/integer-unit:1,0:8/integer-unit:1,3:8/integer-unit:1,0:8/integer-unit:1,2:8/integer-unit:1,0:8/integer-unit:1,0:8/integer-unit:1,3:8/integer-unit:1,0:8/integer-unit:1,97:8/integer-unit:1,30:8/integer-unit:1,40:8/integer-unit:1,84:8/integer-unit:1,144:8/integer-unit:1,1:8/integer-unit:1,0:8/integer-unit:1,4:8/integer-unit:1,104:8/integer-unit:1,206:8/integer-unit:1,60:8/integer-unit:1,128:8/integer-unit:1>>, _, _, {'video_params', 320, 180, _}, _, _}], [], 2.0e+4, _} tagged with a record name violates the declared type of #media_info{flow_type::'file' | 'stream',audio::[#stream_info{content::'audio' | 'metadata' | 'video',stream_id::non_neg_integer(),codec::atom(),bitrate::non_neg_integer(),language::'undefined' | string(),params::#audio_params{channels::non_neg_integer(),sample_rate::non_neg_integer()} | #video_params{width::non_neg_integer(),height::non_neg_integer(),fps::non_neg_integer()},timescale::non_neg_integer()}],video::[#stream_info{content::'audio' | 'metadata' | 'video',stream_id::non_neg_integer(),codec::atom(),bitrate::non_neg_integer(),language::'undefined' | string(),params::#audio_params{channels::non_neg_integer(),sample_rate::non_neg_integer()} | #video_params{width::non_neg_integer(),height::non_neg_integer(),fps::non_neg_integer()},timescale::non_neg_integer()}],metadata::[#stream_info{content::'audio' | 'metadata' | 'video',stream_id::non_neg_integer(),codec::atom(),bitrate::non_neg_integer(),language::'undefined' | string(),params::#audio_params{channels::non_neg_integer(),sample_rate::non_neg_integer()} | #video_params{width::non_neg_integer(),height::non_neg_integer(),fps::non_neg_integer()},timescale::non_neg_integer()}],duration::'undefined' | non_neg_integer(),options::[any()]}
ems_test_file_reading.erl:293: Function flv_mp3_1_flv_test/0 has no local return
ems_test_file_reading.erl:296: The created fun has no local return
ems_test_file_reading.erl:296: Matching of pattern {'media_info', 'file', [{'stream_info', 'audio', 2, 'mp3', 'undefined', _, _, {'audio_params', _, _}, _, _}], [{'stream_info', 'video', 1, 'sorenson', 'undefined', _, _, {'video_params', 320, 180, _}, _, _}], [], 2.0062e+4, _} tagged with a record name violates the declared type of #media_info{flow_type::'file' | 'stream',audio::[#stream_info{content::'audio' | 'metadata' | 'video',stream_id::non_neg_integer(),codec::atom(),bitrate::non_neg_integer(),language::'undefined' | string(),params::#audio_params{channels::non_neg_integer(),sample_rate::non_neg_integer()} | #video_params{width::non_neg_integer(),height::non_neg_integer(),fps::non_neg_integer()},timescale::non_neg_integer()}],video::[#stream_info{content::'audio' | 'metadata' | 'video',stream_id::non_neg_integer(),codec::atom(),bitrate::non_neg_integer(),language::'undefined' | string(),params::#audio_params{channels::non_neg_integer(),sample_rate::non_neg_integer()} | #video_params{width::non_neg_integer(),height::non_neg_integer(),fps::non_neg_integer()},timescale::non_neg_integer()}],metadata::[#stream_info{content::'audio' | 'metadata' | 'video',stream_id::non_neg_integer(),codec::atom(),bitrate::non_neg_integer(),language::'undefined' | string(),params::#audio_params{channels::non_neg_integer(),sample_rate::non_neg_integer()} | #video_params{width::non_neg_integer(),height::non_neg_integer(),fps::non_neg_integer()},timescale::non_neg_integer()}],duration::'undefined' | non_neg_integer(),options::[any()]}
ems_test_file_reading.erl:342: Function big_buck_bunny_mov_test/0 has no local return
ems_test_file_reading.erl:345: The created fun has no local return
ems_test_file_reading.erl:345: Matching of pattern {'media_info', 'file', [{'stream_info', 'audio', _, 'aac', <<17:8/integer-unit:1,144:8/integer-unit:1>>, _, _, _, _, _}], [{'stream_info', 'video', 1, 'h264', <<1:8/integer-unit:1,66:8/integer-unit:1,192:8/integer-unit:1,30:8/integer-unit:1,255:8/integer-unit:1,225:8/integer-unit:1,0:8/integer-unit:1,21:8/integer-unit:1,103:8/integer-unit:1,66:8/integer-unit:1,192:8/integer-unit:1,30:8/integer-unit:1,217:8/integer-unit:1,3:8/integer-unit:1,197:8/integer-unit:1,104:8/integer-unit:1,64:8/integer-unit:1,0:8/integer-unit:1,0:8/integer-unit:1,3:8/integer-unit:1,0:8/integer-unit:1,64:8/integer-unit:1,0:8/integer-unit:1,0:8/integer-unit:1,12:8/integer-unit:1,3:8/integer-unit:1,197:8/integer-unit:1,139:8/integer-unit:1,146:8/integer-unit:1,1:8/integer-unit:1,0:8/integer-unit:1,4:8/integer-unit:1,104:8/integer-unit:1,203:8/integer-unit:1,140:8/integer-unit:1,178:8/integer-unit:1>>, _, _, {'video_params', 240, 160, _}, _, _}], [], 5.96416666666666627862e+5, _} tagged with a record name violates the declared type of #media_info{flow_type::'file' | 'stream',audio::[#stream_info{content::'audio' | 'metadata' | 'video',stream_id::non_neg_integer(),codec::atom(),bitrate::non_neg_integer(),language::'undefined' | string(),params::#audio_params{channels::non_neg_integer(),sample_rate::non_neg_integer()} | #video_params{width::non_neg_integer(),height::non_neg_integer(),fps::non_neg_integer()},timescale::non_neg_integer()}],video::[#stream_info{content::'audio' | 'metadata' | 'video',stream_id::non_neg_integer(),codec::atom(),bitrate::non_neg_integer(),language::'undefined' | string(),params::#audio_params{channels::non_neg_integer(),sample_rate::non_neg_integer()} | #video_params{width::non_neg_integer(),height::non_neg_integer(),fps::non_neg_integer()},timescale::non_neg_integer()}],metadata::[#stream_info{content::'audio' | 'metadata' | 'video',stream_id::non_neg_integer(),codec::atom(),bitrate::non_neg_integer(),language::'undefined' | string(),params::#audio_params{channels::non_neg_integer(),sample_rate::non_neg_integer()} | #video_params{width::non_neg_integer(),height::non_neg_integer(),fps::non_neg_integer()},timescale::non_neg_integer()}],duration::'undefined' | non_neg_integer(),options::[any()]}
rtmp_publish_tests.erl:47: The variable _ can never match since previous clauses completely covered the type 'false'
rtmp_read_tests.erl:46: The created fun has no local return
rtmp_read_tests.erl:54: The variable _ can never match since previous clauses completely covered the type 'false'
rtmp_read_tests.erl:55: Matching of pattern [F = {'video_frame', Content, _, _, _, _, _, _, [Command | _], _} | _] tagged with a record name violates the declared type of #video_frame{content::'audio' | 'metadata' | 'video',dts::number(),pts::number(),stream_id::non_neg_integer(),codec::atom(),flavor::'config' | 'disposable' | 'frame' | 'keyframe' | 'undefined',sound::'undefined' | {'mono','bit16' | 'bit8','rate11' | 'rate22' | 'rate44' | 'rate5'} | {'stereo','bit16' | 'bit8','rate11' | 'rate22' | 'rate44' | 'rate5'},body::binary()}
rtmp_read_tests.erl:56: The pattern [{'video_frame', 'metadata', _, _, _, _, _, _, [<<111:8/integer-unit:1,110:8/integer-unit:1,77:8/integer-unit:1,101:8/integer-unit:1,116:8/integer-unit:1,97:8/integer-unit:1,68:8/integer-unit:1,97:8/integer-unit:1,116:8/integer-unit:1,97:8/integer-unit:1>>, {'object', Body}], _}] can never match the type []
rtmp_read_tests.erl:58: The created fun has no local return
rtmp_read_tests.erl:59: The created fun has no local return
test_media.erl:27: Callback info about the ems_media behaviour is not available
test_media.erl:56: Function init/2 has no local return
test_media.erl:58: Record construction #media_info{audio::[],video::[],metadata::[],options::[]} violates the declared type of field flow_type::'file' | 'stream'