Commit Graph

3062 Commits

Author SHA1 Message Date
Isaac Connor bbcd1846e7 Fix hang caused by using %d instead of PRIu64 in formatting string 2019-12-29 12:44:30 -05:00
Andrew Bauer 00cedc92d2 fix typo 2019-12-28 08:37:16 -06:00
Isaac Connor 16a73d6d5a don't seek back when not neccesary 2019-12-13 18:12:33 -05:00
Isaac Connor 5fcd6361bc fix segfault reading frames for .mp4 in zms 2019-12-13 17:47:18 -05:00
Isaac Connor 0947c3ef24 Merge branch 'master' of github.com:ZoneMinder/zoneminder 2019-11-30 15:37:09 -05:00
Isaac Connor 927165a934 debug the recording_started timestamp and warning when we can't fine a frame before the requested time 2019-11-30 15:37:05 -05:00
Isaac Connor 00b67ec352
Merge pull request #2768 from selvanair/fix-video-start
Correct video buffer length when analysis and capture fps differ
2019-11-30 14:53:22 -05:00
Isaac Connor d1458108f4 Add dimensions wrong check. Add bytes count 2019-11-20 12:43:17 -05:00
Selva Nair 5260563ec4 Update frame deltas in the database to be relative to the video start time
Currenltly the frames written to database have delta time measured
from the event start time. As these deltas are also used to generate
any frame on the fly from the recorded video, these should be relative
to the video start time.

Adjust by subtracting the offset of the video start from event start.
Done when the event is closed.

If video is not stored, this has no effect.

Signed-off-by: Selva Nair <selva.nair@gmail.com>
2019-11-15 21:55:40 -05:00
Selva Nair dd31279ca3 Fix the recorded video start time
The event start time already includes the duration of the
pre_event frames. Do not back track the video by a further
pre_event_count.

Signed-off-by: Selva Nair <selva.nair@gmail.com>
2019-11-15 21:55:40 -05:00
Selva Nair 2e7fad68d1 Properly compute video buffer length when analysis fps is set
Currently the number of video frames kept in the buffer is set as the
pre_event_count. This falls short when the capture fps is larger
than the analysis fps. Fix by computing the retained video duration
as pre_event_count/analysis_fps

No change if analysis fps is not set.

Signed-off-by: Selva Nair <selva.nair@gmail.com>
2019-11-15 21:55:40 -05:00
Isaac Connor fdf5150a16 fix build on jessie 2019-11-13 13:51:22 -05:00
Isaac Connor 46991f04e6 better debugging when fail to sws_scale 2019-11-01 09:24:22 -04:00
Isaac Connor 21df2c6ac7 Always write snapshot.jpg and alarm.jpg instead of only when using video storage 2019-10-30 16:25:09 -04:00
Isaac Connor 35ae81d985 dynamically allocate next_dts and use it in write_packet to store the next dts value. write_interleaved_packet destroys the passed in packet so we need to store next_dts before writing out the packet. 2019-10-23 09:25:16 -04:00
Isaac Connor 76fd32b427 more debug, and ensure that pts != AV_NOPTS_VALUE 2019-10-22 10:01:24 -04:00
Isaac Connor dfe2f55ebe More debugging to figure out #2720 2019-10-20 13:50:24 -04:00
Isaac Connor d9d91c4a8d Fix #2728 by resetting the frame size before reading from the fifo 2019-10-20 13:32:16 -04:00
Isaac Connor 21dd9b527d when ipkt->pts is AV_NOPTS_VALUE should still set opkt.pts to AV_NOPTS_VALUE 2019-10-19 17:12:19 -04:00
Isaac Connor 7068769a90 zm_send_packet_receive_frame sends 0 as success 2019-10-18 13:52:07 -04:00
Isaac Connor 6a56de41f0 fix parameter order 2019-10-18 13:39:52 -04:00
Isaac Connor 17a7d02275 fix reversal of in_frame/out_frame in VideoStore destructor 2019-10-18 10:16:18 -04:00
Isaac Connor 60ec545683 fix compile warning due to snprintf into a too small char array 2019-10-18 09:43:25 -04:00
Isaac Connor a0f021ee12 Handle the case of flushing resampler by sending NULL 2019-10-17 17:37:36 -04:00
Isaac Connor f938fd83ac keep track of video_next_dts. Use it when packet dts is AV_NOPTS_VALUE. Also handle EAGAIN in send_packet_get_frame etc 2019-10-16 09:01:59 -04:00
Isaac Connor d03de98317 remove carriage returns in ffmpeg log lines 2019-10-16 09:00:39 -04:00
Isaac Connor 90d6e11fb9 If we try to write a packet with dts == AV_NOPTS_VALUE, set it to stream->cur_dts. This might at least give us a playable file. 2019-10-11 14:04:51 -04:00
Isaac Connor 3b586a2abe include stream index and packet queue size in debug message 2019-10-11 13:53:18 -04:00
Isaac Connor 30b5612691 fix case of sql 2019-09-28 12:57:00 -04:00
Isaac Connor 492be7cc33 make last_zoom last_scale last_x and last_y members of the StreamBase object instead of static vars so that we can access them in monitorStream 2019-09-26 13:51:49 -04:00
Isaac Connor b787682fa9 Fix play from pause when not buffering. When change of zoom, send two paused images so that response is instant. Fix some misplaced line feeds. 2019-09-26 13:51:13 -04:00
Isaac Connor 1dda79af46 remove debug 2019-09-25 12:00:00 -04:00
Isaac Connor 15a1b19b42 spaces 2019-09-23 10:53:21 -04:00
Isaac Connor 83e477e6be CaptureAndRecord in remote camera rtsp doesn't work. Remove it. 2019-09-23 10:52:57 -04:00
Isaac Connor ce37fce99c spacing 2019-09-20 08:19:57 -04:00
Isaac Connor 09533c19af Fix %d to %s 2019-09-20 08:19:44 -04:00
Isaac Connor 17e00cec94 Fix setting rtsp_transport when rtsp 2019-09-17 14:58:16 -04:00
Isaac Connor e8e29d62b2 Use dts instead of pts for first values 2019-09-17 12:53:29 -04:00
Isaac Connor 0d347f0cf5 init log early so that we create zmc_m.log instead of undef.log 2019-09-17 11:37:48 -04:00
Isaac Connor 6041616efc add string_toupper function 2019-09-17 11:37:20 -04:00
Isaac Connor 33aa6abf59 Only open log file if we are going to write to it. 2019-09-17 11:36:57 -04:00
Isaac Connor ecde0a7ae0 Add a string_toupper function 2019-09-17 11:11:22 -04:00
Isaac Connor 1a94479751 Cleanup/rework. Handle database connection failure. This can happen if we init logging before config reading. Default terminal log level to warning. Cleanup logInit copying the options in order to populate mLogPath from config. We can handle this in the constructor now. 2019-09-17 11:10:59 -04:00
Isaac Connor 9a3765f6aa spacing and google code style 2019-09-17 10:31:48 -04:00
Isaac Connor 4509c6a239 Don't set rtsp options unless we are using rtsp. Should prevent everyone from reporting the warning about unsupported options. Note that I removed some extra includs that have no business in zm_ffmpeg_camera. 2019-09-17 10:31:31 -04:00
Isaac Connor c8934dac7f Remove useless debug 2019-09-17 10:30:00 -04:00
Isaac Connor cbf9931371 Don't log about calling dbConnect when already connected. We make this call in zm_logger, it is just going to have to be acceptable to call it multiple times. 2019-09-17 10:29:30 -04:00
Isaac Connor 54c14b17d7 Spacing and google code style 2019-09-17 10:28:42 -04:00
Isaac Connor 6925a75831 codec not ready is not an error. Make it a debug 2019-09-15 18:01:38 -04:00
Isaac Connor 0a31a8dab6 Just use pts instead of tracking both first pts and first dts. Should prevent conflicts 2019-09-15 17:53:25 -04:00
Isaac Connor 675cbe8854 code style, add bytes per second read statistic and a code comment about the sleeping 2019-09-14 10:48:39 -04:00
Isaac Connor 306bda86c2 fix sws_get_delay 2019-09-13 21:28:43 -04:00
Isaac Connor eafa0da06f fixes, handle when audio codec isn't open in ffmpeg_camera 2019-09-13 16:06:25 -04:00
Isaac Connor 3a5d1ff3ca Hack in missing bits for ubuntu trusty/libav/avresample 2019-09-13 15:51:35 -04:00
Isaac Connor 5ddd20ed1a refactor code. Handle resample buffering during encoding instead of when closing file 2019-09-13 14:34:53 -04:00
Isaac Connor 701aa8d924 add flushing the resample buffer to get the remaining samples encoded 2019-09-13 10:55:30 -04:00
Isaac Connor 788b5b480b hack to make sync work on resample 2019-09-12 17:59:08 -04:00
Isaac Connor d9d4c6b4ca fix build 2019-09-12 17:26:19 -04:00
Isaac Connor 0a8aba2b76 rework how pts/dts is handled. We still use video_first_pts, but if the result is negative, normalize it to 0. Also now use audio_next_pts/dts to calculate pts when resampling and re-encoding. I believe this resolves the issues with wrong duration in the audio stream. 2019-09-12 16:52:59 -04:00
Isaac Connor 8fb55cdbff Add codec name to zm_dump_codec and zm_dump_codecpar add new functions zm_receive_packet 2019-09-12 16:51:33 -04:00
Isaac Connor 6c6b2d7c6f Fix build 2019-09-09 17:10:40 -04:00
Isaac Connor 097ce5e778 add const to cast 2019-09-09 17:09:01 -04:00
Isaac Connor 792af28c54 return a value from write_packet 2019-09-09 16:55:22 -04:00
Isaac Connor d5aa95e45f cpplint fixes 2019-09-09 16:13:32 -04:00
Isaac Connor d5d4d9d19b ret should be a heap var, not a member of the object. Somehow this also seems to fix crashing on debian buster. I assume the compiler is confused 2019-09-08 16:10:57 -04:00
Isaac Connor 8215fe1c0f Some versions off avcodec libs have pkt_pts and pkt_dts but they have been deprecated and weren't of any use anyways 2019-09-08 16:10:20 -04:00
Isaac Connor 85e0a086b3 fixes #2694 2019-09-03 11:55:37 -04:00
Isaac Connor c80ef0e0ab spacing 2019-08-28 12:20:03 -04:00
Isaac Connor bd3395ac98 introduce VideoStore::write_packet to refactor out duplicated code. Add the ability to receive multiple packets from audio encoder per input packet 2019-08-28 12:19:54 -04:00
Isaac Connor efb8711c02 Merge branch 'master' of github.com:ZoneMinder/zoneminder 2019-08-28 11:43:59 -04:00
Isaac Connor 5f0080ef92 Fix crash when using auth_relay=none 2019-08-28 10:34:30 -04:00
Isaac Connor 64d024b0c0 Fix spacing 2019-08-28 10:33:18 -04:00
Isaac Connor 505a041c88 Don't add a final db frame to the event, because there is no jpg for the frame. I don't know why this code was originally added. 2019-08-28 10:17:23 -04:00
Isaac Connor 59940ab675 report pixformat names instead of just #'s on error 2019-08-28 09:19:57 -04:00
Isaac Connor 39620c01ff Add rescaling of pkt pts/dts from audio_out_ctx to audio_out_stream 2019-08-26 16:37:32 -04:00
Isaac Connor b26ed9bf62 Yet more debugging. Also, move pts adjustment to before audio encoding 2019-08-26 16:17:45 -04:00
Isaac Connor 2fe9442257 Fix time_base conversion when flushing audio queue. Add more debugging. COrrect pkt_Duration when resampling audio 2019-08-23 18:17:26 -04:00
Isaac Connor 886a203bf1 Support hwaccel for non-passthrough case as well 2019-08-21 10:11:58 -04:00
Isaac Connor 01e988ffba remove some redundant debugs. Improve some messages 2019-08-20 14:09:47 -04:00
Isaac Connor 4a82ce83a7 quit a bit earlier when stream is broken. 2019-08-20 11:13:38 -04:00
Isaac Connor ed190340b9 fix typo 2019-08-19 11:12:47 -04:00
Isaac Connor 369dd03909 remove errant i 2019-08-18 21:32:19 -04:00
Isaac Connor 503cf6cd24 More backticking of SQL 2019-08-17 14:37:19 -04:00
Isaac Connor efa264e0c7 Fix playing in reverse. Fix not sending first frame. Fix sql problem with backticks. Not being able to open a frame image is now non-fatal. 2019-08-16 10:24:51 -04:00
Isaac Connor c7b6db9be7 Put backticks around all columns and tables in sql to deal with mysql 8 2019-08-14 16:18:21 -04:00
Isaac Connor c1984ad7cb Fix problem calculating mem_size using an int from ImageSize. With camera resolutions going up, width*height*colour could exceed 32bits. So use a guarnteed 53bit type, which fixes the memsize calculations. Fixes #2682 2019-08-11 20:21:37 -04:00
Isaac Connor 5b62c91cc2 Improve some debugging to try to diagnose recent segfault report 2019-08-10 14:46:05 -04:00
Isaac Connor 0cdb43e165 make dump_video_frame a define instead of a function, fix linesize 2019-08-10 14:45:45 -04:00
Isaac Connor bb6d2631c9 Fix hwaccel compile on pi 2019-08-08 09:26:40 -04:00
Isaac Connor 6a9464044b Demote warnings about fixing non-monotonic dts to debug 2019-08-02 08:03:02 -04:00
Isaac Connor 14ed777eeb fix segfault when debbing is turned on for zma 2019-07-31 17:17:54 -04:00
Isaac Connor 90cb5d018a
Fix 2673 (#2675)
* Change MaxFPS to DECIMAL(5,3) to handle values like 1/60 = 0.017

* When fps < 1 we may need to wait longer than 10s.  Also, we cannot sleep for a long time, because we may need to send a keep alive or check the command queue. So limit the sleep to 1s

* Bump version

* Update MaxFPS to Decimal(5,3)

* Fix missing ;
2019-07-31 11:42:38 -04:00
Isaac Connor 48ad8d47fc Add capture_max_fps to monitor object instead of just calculating the delay. 2019-07-31 11:23:02 -04:00
Isaac Connor 4b89ced889 Warn about waiting more than .5s instead of .1 2019-07-26 12:24:36 -04:00
Isaac Connor e5c194e9ee Fix return 403 status code 2019-07-26 12:22:04 -04:00
Isaac Connor 09934ed7f5 Fix sendTextFrame 2019-07-26 12:21:25 -04:00
Isaac Connor 3da12fd141 Add a bunch of debugging 2019-07-26 12:21:15 -04:00
Isaac Connor 0643108ba4 Use fputs instead of fprintf. Spacing and google code style changes 2019-07-26 10:53:48 -04:00
Isaac Connor 1e0c39c632 mostly spacing cleanups. Don't bother setting pkt_duration on resampled frame 2019-07-19 16:28:18 -04:00
Isaac Connor 9a31f8792c return proper error codes when failed auth or fail permissions 2019-07-19 13:55:35 -04:00
Isaac Connor f3166663a5 unref hw_device_ctx on Close. I think this should release all the other hwaccel related stuff 2019-07-19 12:51:31 -04:00
Isaac Connor fcee031785 Merge branch 'master' of github.com:ZoneMinder/zoneminder 2019-07-17 21:10:46 -04:00
Isaac Connor 542d88b6a4 fix compile without HWCONTEXT 2019-07-17 21:10:24 -04:00
Pliable Pixels a9d01ba3d2 Alarm api (#2665)
* fixed alarm api to use tokens if present

* clearer debug logs for tokens

* space
2019-07-17 20:38:58 -04:00
Pliable Pixels 2b7610a5ac fixed ffmpeg log association to zm log levels (#2664) 2019-07-17 20:37:27 -04:00
Isaac Connor 75af397223 hwFrame isn't defined unless we have HWCONTEXT_H 2019-07-17 20:33:23 -04:00
Isaac Connor 34c141304d Merge branch 'master' of github.com:ZoneMinder/zoneminder 2019-07-17 10:07:29 -04:00
Isaac Connor ef9fe2dbd6 Free up hwFrame, preventing memleak 2019-07-17 10:06:30 -04:00
Pliable Pixels 67168a2387 demote token log (#2663) 2019-07-12 14:31:39 -04:00
Isaac Connor 05be9008c7 use FFMPEGInit to initialise ffmpeg instead of doing it ourselves 2019-07-11 17:57:11 -04:00
Isaac Connor 13c91bdf60 Add pts adjustment to the delayed flushed encoder packets 2019-07-11 17:56:53 -04:00
Isaac Connor 288f2f3e8f Convert zm_dump_frame from a function to a define, this way we get line #'s from where we call zm_dump_frame instead of from the line in zm_ffmpeg where the function was. 2019-07-11 17:56:22 -04:00
Isaac Connor 94cc85aa36 Sorta fix pts on encoded audio packets. Sync is off, but at least it is close 2019-07-07 08:57:22 -04:00
Isaac Connor 0f35d86efb implement zm_send_frame which sends a frame and receives a packet 2019-07-07 08:56:39 -04:00
Isaac Connor 726e5c6dd5 Merge branch 'master' of github.com:ZoneMinder/zoneminder 2019-07-03 09:50:49 -04:00
Isaac Connor a9579484b8 gracefully handle failure to config hw pix fmt and debug a bit more 2019-07-03 09:49:53 -04:00
Isaac Connor 5ea5bd9bde Only do audio_first_pts if we have audio_in_stream 2019-07-02 12:26:33 -04:00
Isaac Connor 4e8ac47060 Use the video_first_pts to set the audio_first_pts 2019-07-02 11:58:22 -04:00
Isaac Connor 2dc60196c5 Code cleanup and cpplint 2019-07-02 11:14:24 -04:00
Isaac Connor 268bc2264b Merge branch 'storageareas' 2019-07-02 10:19:03 -04:00
Isaac Connor d972ab6006 add min_section_length test to alarmed events that go unalarmed 2019-06-27 21:50:12 -04:00
Isaac Connor 0ab4f9fce0 More debugging in packetqueue. 2019-06-27 21:49:43 -04:00
Isaac Connor 3bd4486b65 Start event when alarm frames >= alarm_frame_count-1 because it is 1based. Add some debug. 2019-06-27 15:48:10 -04:00
Isaac Connor ac7d4869de We need to seek back pre_event_count video frames, not any frames 2019-06-27 15:36:13 -04:00
Daniel Schaefer 158b9438d7 Explicitly link with libdl (#2649)
Otherwise on some systems linking would fail with

  undefined reference to symbol 'dlclose@@GLIBC_2.2.5'
2019-06-27 15:08:29 -04:00
Isaac Connor dd57fd95ce Clean up cruft from videostore api. Fix packetqueue clear_unwanted_packets to take a pre_event_count and take it into consideration when finding the right spot in the queue to start recording. 2019-06-27 11:11:14 -04:00
Isaac Connor 6ed29a3d56 Google code style, ifdef out all the extra includs that shouldn't be in the .h 2019-06-27 10:29:47 -04:00
Isaac Connor 6a87ae0fa7 fix compile warning by copying two bytes, which will grab the \0 after the \n 2019-06-27 10:24:51 -04:00
Isaac Connor 763fe16a04 Google code style, merge some fprintf's 2019-06-27 10:20:23 -04:00
Isaac Connor 0686f487ac %s => %d for error count 2019-06-27 04:18:25 -04:00
Isaac Connor d26286a170 fix test for hwtransfer needed 2019-06-27 03:40:18 -04:00
Isaac Connor 2a65b339c1 init hw_pix_fmt in constructor 2019-06-25 22:19:09 -04:00
Isaac Connor 86e8b58561 move hw_device_ctx under ifdef for HWCONTEXT_H 2019-06-25 22:06:00 -04:00
Isaac Connor 7389bbcb25 better debug in selecting hw_format, add CUDA, add setting device for hwaccel 2019-06-25 21:47:19 -04:00
Isaac Connor a44631a59d rough in support for ffmpeg 3.4 2019-06-25 16:35:07 -04:00
Isaac Connor 5ab4414b11 Only include hwaccel support if LIBAVUTIL_HWCONTEXT_H is deifned 2019-06-25 15:58:55 -04:00
Isaac Connor 679b6b1b2d remove old qsv code 2019-06-25 15:47:23 -04:00
Isaac Connor 46f3aabc25 Merge branch 'hwdecode' into storageareas 2019-06-25 15:35:56 -04:00
Isaac Connor 86c4051c44 handle zm_receive_frame returning AVERROR instead of boolean 2019-06-25 15:34:36 -04:00
Isaac Connor 434bbce954 Add loading decoder_hwaccel in Monitor 2019-06-25 15:34:17 -04:00
Isaac Connor d0abd16494 add passing hwaccel name and device. use av_make_error_string(ret).c_str() to reduce code and increase consistency 2019-06-25 15:34:01 -04:00
Isaac Connor cf7f3e8a88 add passing hwaccel name and device. use av_make_error_string(ret).c_str() to reduce code and increase consistency 2019-06-25 15:33:54 -04:00
Isaac Connor 6a87d9a875 change zm_receive_frame to return AVERROR instead of boolean 2019-06-25 15:32:47 -04:00
Isaac Connor 2cbcaeebbc clean out old hwdecode stuff. refactor common code out 2019-06-25 14:11:59 -04:00
Isaac Connor bfb7238edb Merge branch 'master' into hwdecode 2019-06-25 09:09:57 -04:00
Isaac Connor c3135accbb Make events close on a section length time boundary only if event_close_mode == CLOSE_TIME. When an alarm happens in event_close_mode==ALARM, close the continuous event regardless of the # of pre-event frames in the event. Add some debugging 2019-06-24 21:11:52 -04:00
Isaac Connor 246b4cb9d1 working hwdecode 2019-06-24 17:22:59 -04:00
Isaac Connor 2d80283844 simplify some logic in Analyze and prevent segfault when we close continuous event to start alarm event 2019-06-24 13:13:46 -04:00
Isaac Connor 9a353d0b6d don't set frame size 2019-06-24 11:44:21 -04:00
Isaac Connor 44e4d93445 Merge branch 'master' into storageareas 2019-06-24 11:35:36 -04:00