Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

4.0 release #229

Merged
merged 29 commits into from
Mar 11, 2022
Merged

4.0 release #229

merged 29 commits into from
Mar 11, 2022

Conversation

easytarget
Copy link
Owner

@easytarget easytarget commented Mar 8, 2022

I'm rapidly going for a 4.0 release, will assemble a few final fixes here:

  1. Stream stop button (trivial but useful)
  2. XCLK set low initially for maximum compatibility with budget boards etc, expose in UI so the user can then find a good setting.
  3. SPIFFS; the xclk change (above) will help with some of the errors, and a change to the startup order should also help.
  4. Get the MDNS stuff from Does this have MDNS? #201
  5. Look at the other open PR's, but I dont intend to get too bogged down in them.

15498th and others added 11 commits December 17, 2021 00:14
Add global variable and #define in config  to set default.
Add new parameter in /control handler and preferences.
Putting delay after finishing serving the frame causes image to appear
in stream with a lag. The reason for this appears to be that browser
relies on next frame content boundary in order to determine the end of
image.

That means that in order for browser to show frame right after receiving
it, server needs to send next frame content boundary right after image
itself, and delay to limit framerate should be applied after content
boundary, not before it.

According to https://www.w3.org/Protocols/rfc1341/7_2_Multipart.html
sending first frame without content boundary will likely cause its
content to be ignored, which seems to be acceptable price for not
treating first iteration of the loop as special case.
@easytarget easytarget self-assigned this Mar 8, 2022
@rdragonrydr
Copy link

rdragonrydr commented Mar 8, 2022

  • Does this fix the bug with the default "camera lamp" setting not working? I can't figure out why that's not working, but I suspect it's an initialization order issue as well.
  • It might be a better idea to set the MDNS (and/or via OTA) name to be the device's hostname and not the display name for the web page (I mirrored the name that the OTA uses to set up for backward compatibility, since with that enabled it's also the name that MDNS would have). The reason I suggest this is that the display name is long and has spaces ("ESP32 camera server").

@easytarget
Copy link
Owner Author

Next up; merge #195 to this

easytarget and others added 5 commits March 9, 2022 16:34
* Add framerate limit, print delay in debug dump.
* Add global variable and #define in config  to set default.
* Add new parameter in /control handler and preferences.
* Add max fps control in full index page for ovh2640.
* Add max fps control for ov3660 index page.
* Update API documentation.
* Use better name for framerate limit variables.
* Change UI to show the same values of framerate control as used in command interface.
* Apply framerate limiting delay after serving content boundary.

Putting delay after finishing serving the frame causes image to appear
in stream with a lag. The reason for this appears to be that browser
relies on next frame content boundary in order to determine the end of
image.

That means that in order for browser to show frame right after receiving
it, server needs to send next frame content boundary right after image
itself, and delay to limit framerate should be applied after content
boundary, not before it.

According to https://www.w3.org/Protocols/rfc1341/7_2_Multipart.html
sending first frame without content boundary will likely cause its
content to be ignored, which seems to be acceptable price for not
treating first iteration of the loop as special case.

* Fix delay before first frame by sending first request boundary before
entering the loop.

Co-authored-by: 15498th <user@localhost>
Co-authored-by: Owen Carter <[email protected]>
@easytarget
Copy link
Owner Author

easytarget commented Mar 10, 2022

@rdragonrydr
yes, the lamp state issue is fixed, and I have a new MDNS_NAME setting in config that is used for both OTA and local name, defaulting to esp32-cam; thank you for the suggestion.

I think I'm done on the branch now, I'll be merging to master later today. Then I will do a release, after a few days 'settle' time.

@easytarget
Copy link
Owner Author

OTA went badly broken with esp arduino cores 2.0.1 and 2.0.2, the module would simply reboot every time OTA started.
Turns out to be a conflict with the camera module. de-init'ing the camera once OTA starts allows it to work.

@easytarget easytarget merged commit 9c96ded into master Mar 11, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants