Skip to content

Updates on handling recorders #770

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

Merged
merged 9 commits into from
Apr 29, 2024
Merged

Updates on handling recorders #770

merged 9 commits into from
Apr 29, 2024

Conversation

dericed
Copy link
Member

@dericed dericed commented Nov 5, 2023

No description provided.

@dericed dericed force-pushed the updates-on-handling-recorders branch from c5b9d46 to 9f74228 Compare November 5, 2023 19:00
@dericed
Copy link
Member Author

dericed commented Nov 5, 2023

This mixes a few updates, but generally removed bmdtools as an option (soon we can avoid triple-piped recording scenarios), and it swaps most of the use avfctl to dvrescue, and responds to a few feature requests.

Copy link
Member

@libbyhopfauf libbyhopfauf left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems to be working on my computers! I ended up having to go into recovery mode and resetting the permissions again (using the troubleshooting instructions here.) Now both devices show up on my computer via avfctl -list_devices and the vrecord GUI. Capture and packaging to MKV once capture is ended are working properly on my computers with this version.

libbyshopfauf@MacBook-Pro-55 ~ % avfctl -list_devices
2023-11-06 10:30:00.622 avfctl[1220:12548] Devices:
2023-11-06 10:30:00.623 avfctl[1220:12548] [0 - 0x8004601025e3c58] DV-VCR (Sony DSR-25)
2023-11-06 10:30:00.623 avfctl[1220:12548] [1 - 0x8004602010e007c] DSR-1500A (Sony DSR-1500A)
Screenshot 2023-11-06 at 10 35 11 AM

Computers tested:

  • Macbook Pro 2019 running Ventura 13.5.1
  • Macbook Pro 2021 running Ventura 13.5.1

Prior to resetting the permissions in recovery mode, I tried all of the other steps listed below (just in case it is helpful at all):

  • In the vrecord GUI, I tried rescanning, refreshing vrecord and restarting my computer multiple times. If I selected "deck control"" in the GUI and click "repack", I get a message that the deck is stopped (similar to the example in vrecord cannot see DV device #769):
Screenshot 2023-11-06 at 9 38 27 AM
  • I tried uninstalling and reinstalling the Blackmagic drivers (including having to reset the permissions again.)
  • Regarding my computers reading FireWire devices in general: if I ran avfctl -list_devices, I kept getting "No devices found." But if I ran ioreg -l, both DV devices connected are listed:
IOFireWireDevice@8004602010e007c  <clas$
    | |   |       |                   | {
    | |   |       |                   |   "FireWire Speed" = 0
    | |   |       |                   |   "FireWire Self IDs" = <816c08c0>
    | |   |       |                   |   "Vendor_ID" = 524358
    | |   |       |                   |   "FireWire Product Name" = "DSR-1500A"
    | |   |       |                   |   "FireWire Vendor Name" = "Sony"
    | |   |       |                   |   "FireWire Node ID" = 65473
    | |   |       |                   |   "FireWire Device ROM" = {"Offset 0"=<$
    | |   |       |                   |   "IOCFPlugInTypes" = {"CDCFCA94-F197-1$
    | |   |       |                   |   "GUID" = 576537726724997244
    | |   |       |                   |   "IOUserClientClass" = "IOFireWireUser$
    | |   |       |                   |   "Model_ID" = 3670189
	
	
    IOFireWireDevice@8004601025e3c58  <clas$
       | |   |           |               | {
       | |   |           |               |   "FireWire Speed" = 0
       | |   |           |               |   "FireWire Self IDs" = <816c08c2>
       | |   |           |               |   "Vendor_ID" = 524358
       | |   |           |               |   "FireWire Product Name" = "DSR-25"
       | |   |           |               |   "FireWire Vendor Name" = "Sony"
       | |   |           |               |   "FireWire Node ID" = 65535
       | |   |           |               |   "FireWire Device ROM" = {"Offset 0"=<$
       | |   |           |               |   "IOCFPlugInTypes" = {"CDCFCA94-F197-1$
       | |   |           |               |   "GUID" = 576537722452065368
       | |   |           |               |   "IOUserClientClass" = "IOFireWireUser$
       | |   |           |               |   "Model_ID" = 2097167

@tomackroyd
Copy link

tomackroyd commented Nov 8, 2023

Looking forward to trialling this. @libbyhopfauf where are the troubleshooting instructions you mentioned?
edit:found

Copy link
Member

@privatezero privatezero left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Noticed a couple of gremlins!

vrecord Outdated
@@ -2007,6 +2014,7 @@ _review_all_options(){
fi
_review_option -n -d "digital" "WAVEFORM_SCALE_CHOICE" "${WAVEFORM_SCALE_OPTIONS[@]}"
_review_option -n -d "Broadcast Range" "SIGNAL_VIEW_CHOICE" "${SIGNAL_OPTIONS[@]}"
_review_option -n -d "As is" "SIGNAL_INT_CHOICE" "${INT_OPTIONS[@]}"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This line breaks things for me as _review_option will error by saying "As is" is not a valid option and exit. Does this work on your end?

Copy link
Member

@privatezero privatezero Jan 12, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

changing "As is" to "auto" fixes this on my end - this settings for this option do not, however, persist currently and are not apparently stored in the config file - was this intentional?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I switched to 'auto'

_get_dvrescue_inputs(){
# set dvrescue input options
unset DVRESCUE_DEVICES
while read dvrescue_device ; do
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this needs to be moved into an else clause so it doesn't run if the system is Linux (at least until I have time to make changes to the code to switch Linux side over to dvrescue as well. As written this displays the device name detected via dvrescue in the options (yay! that's ultimately a good thing) but is misleading to users until dvrescue is integrated as currently linux vrecord can only capture from the default DV device

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

changing order to something like the following seems to work on linux for now:

_get_dvrescue_inputs(){
    # set dvrescue input options
    if [[ "${OS_TYPE}" = "linux" ]] ; then
        DVRESCUE_DEVICES+=('Default DV Device')
    else
        unset DVRESCUE_DEVICES
        while read dvrescue_device ; do
            DVRESCUE_DEVICES+=("${dvrescue_device}")
        done < <(dvrescue -list_devices | grep "\[DV\]")
        if [[ "${#DVRESCUE_DEVICES[@]}" = 1 ]] ; then # default to first input if only one
            DVRESCUE_INPUT_CHOICE="${DVRESCUE_DEVICES[0]}"
        fi
    fi
}

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The latest update does a lot more with getting linux to grab the device id and use it. Can you retest.

vrecord Outdated
if [[ -z "${ALT_INPUT}" ]] && [[ "${DECKLINK_UTILITY_CHOICE}" == "ffmpeg" ]] ; then
_review_option "TIMECODE_CHOICE" "${TIMECODE_OPTIONS[@]}"
fi
_review_option "TIMECODE_CHOICE" "${TIMECODE_OPTIONS[@]}"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this seems to break using most files for test inputs - suggest something like

if [[ -z "${ALT_INPUT}" ]] ; then
    _review_option "TIMECODE_CHOICE" "${TIMECODE_OPTIONS[@]}"
fi

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

@dericed dericed force-pushed the updates-on-handling-recorders branch from 254524e to 012415c Compare February 5, 2024 16:03
@dericed
Copy link
Member Author

dericed commented Feb 5, 2024

This is ready for a new review. Now avfctl is mostly gone and now dvrescue capture and playthrough is all done with just dvrescue and ffplay (or mpv) and not ffmpeg.

@dericed dericed force-pushed the updates-on-handling-recorders branch from f515bc5 to a491fff Compare February 5, 2024 20:53
@dericed
Copy link
Member Author

dericed commented Feb 27, 2024

ping to @privatezero as mipops/dvrescue#827 (comment) relates to this.

@privatezero
Copy link
Member

@dericed I've updated my issue there with results of another test

@privatezero
Copy link
Member

@dericed I've made a modified version of this branch here: https://github.com/amiaopensource/vrecord/tree/updates-on-handling-recorders-linux

This branch adds a setting for allowing user to select capture tool for dv - this would be dvrescue on macs and dvrescue or ffmpeg via iec61883 device on Linux. Any thoughts? Having a bit of choice/redundancy on the Linux side is a positive I think!

@dericed dericed force-pushed the updates-on-handling-recorders branch from 3783304 to 56bf3ae Compare April 26, 2024 19:48
@ablwr
Copy link
Member

ablwr commented Apr 26, 2024 via email

@dericed dericed merged commit 6696f08 into main Apr 29, 2024
@dericed dericed deleted the updates-on-handling-recorders branch April 29, 2024 13:34
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.

5 participants