Video, embed, html block usage out of the_content

I’ve added some comments to clarify a problem with your code:

function swvideo( $html) {

  if ( $html ) { // if $html == true
    return $html;
  }

  $post = get_post( $post ); // irrelevant
  if ( ! $html ) { // if $html != true
    return $html;
  }
  ...

As you can see, nothing past this point will be executed, because the input $html must either be equivalent to true, or not equivalent to true.

I can’t tell clearly what you’re trying to accomplish, but maybe advanced custom fields would help?